Download Now (about 4 MB) | Back to Hard & Software

The IO OCX ActiveX control provides access to I/O ports under ALL 32-bit versions of Windows. Windows NT/2K/XP support has been added (December 24, 2001) by employing DriverLINX PortIO (  DriverLINX PortIO may be freely used in accordance with the License agreement provided in the install (included in the Download above).  Install DriverLINX PortIO before attempting to use IOOcx. 

Use this link for Vista and Windows 7 installations.

The IOOcx properties, events, and methods are as follows:


Interval - The I/O port specified by the ReadAddress property is read at the interval specified by this property. Interval is specified in milliseconds with a valid range of 55-65535. Depending on the WaitFor property selected, an IODataAvailable event can be generated. See the WaitFor and WaitMatchData properties.

ReadAddress (Long) - Set this property to the address of the I/O port to be read.

ReadMask (Byte)- Set this property to mask data that is read from an I/O port. For example, ReadMask = &HFF (default) returns all data. However, ReadMask = &H10 returns only bit 5. That is, the I/O port read is bitwise ANDed with ReadMask -- the result of the AND operation is returned in ReadData.

WaitFor (Integer) - Set this property to None, Change, or Match.

WaitMatchData (Byte)- Set this property to the value that you want to match. When the I/O port is read and it matches the WaitMatchData property, and the WaitFor property is set to Match, an IODataAvailable event will be generated.

WriteAddress (Long)- Set this property to the address of the I/O port to be written.


ReadIO - Call ReadIO to read the I/O port specified by the ReadAddress property. If the ReadMask property is < &HFF, ReadIO is masked by the value in ReadMask.

WriteIO - Call WriteIO to write to the I/O port specified by the WriteAddress property. Call WriteI/O with the argument (byte) data to be written to the I/O port.


IODataAvailable (ReadData As Byte)- This event is generated when I/O port data changes and the WaitFor property is set to either Change or Match. If WaitFor is set to Match, then the I/O port data must have changed and it must match the data pattern specified by the WaitMatchData property. ReadData masked by the ReadMask property is made available in the IODataAvailble event subroutine.


This ActiveX control is provided free, without warranty of any kind. You are free to use it for any purpose that you deem reasonable, but the author is not responsible for any such use (or misuse), or for any damage that might result from its use. Treat this software like you would any beta software. It may work as described, but if it does not, you got what you paid for.

Feel free to contact me if you have problems. However, I cannot guarantee that I will be able to respond in a timely way. Please let me know about any successes.

Source Code (VB6) is available from the author.  The cost is US$10.00.  Please send a check for US$10.00 or use this link for credit card orders, with your request to:

Richard Grier
Hard & Software
12962 West Louisiana Avenue
Lakewood, CO 80228

Include your name, address, phone number, and email address.  A ZIP file containing the source code will be sent as an attachment to the email address that you specify.  If you cannot receive email attachments, indicate that fact and I will send the source code on a floppy disk.  Allow one week for delivery of source code by email, and one to four weeks (depending on where you are) for delivery of source code on floppy disk by surface mail.

You can send me email saying that you are mailing a check or credit card order, if you want.  However, I won't be able to send out the source code until your check has been received, or notification that your credit card payment has been credited.

Back to Hard & Software