I hope this is the right forum, I've only ever used StackOverflow and am new to Electricals.

I have written an Access Control program in Delphi which sends an 8bit value to one of the three parallel ports (278, 378 or 3BC) for a certain length of time. This is in order to bypass expensive PCI cards & control boxes, and a client has specifically requested Parallel.

As Parallel/Serial ports are not always available it would be useful to be able to write to usb-parallel convertors too. With serial-USB the PC simply lists the attached serial device as a COM port and the software writes to it as usual.

However when I plug the USB-parallel convertor in to my XP machine (with no parallel ports) it shows up as an HID rather than LPT, which would require me to write a separate procedure. When I plug it in to my Windows2000 PC (which has parallel) it displays as an Unknown Device - IEEE-1284 Controller and requires drivers.

My question - is there a way I can make the PC recognise the USB device as an LPT port?

But going forward, which method should I look in to which is the standard way of relaying a 1bit message to Access Control hardware? Should I be trying to write to HID port so that a PIC controller can pick up the message?



closed as off topic by Leon Heller, Kellenjb, Brian Carlton, JustJeff, Majenko Dec 29 '11 at 0:23

Questions on Electrical Engineering Stack Exchange are expected to relate to electronics design within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ Nothing to do with electronic design. Question should be closed. \$\endgroup\$ – Leon Heller Dec 28 '11 at 14:43
  • \$\begingroup\$ Have you ever thought about an Arduino or something similar? \$\endgroup\$ – Majenko Dec 28 '11 at 14:43
  • \$\begingroup\$ I don't think this is such a bad question. \$\endgroup\$ – Olin Lathrop Dec 28 '11 at 14:50
  • 1
    \$\begingroup\$ Can you add a part number for the USB-Parallel cable so we could learn anything that datasheets might tell us about this part? \$\endgroup\$ – Joel B Dec 28 '11 at 16:15
  • \$\begingroup\$ i'd be interested in the answer to this, but it's kind of off-topic for this exchange. Also, it's not a converter, it's an adapter you're talking about; USB is a bus, to which you add devices. There is in no sense a pre-existing set of signals that resemble a parallel port that are merely being 'converted' by such a device. \$\endgroup\$ – JustJeff Dec 28 '11 at 17:08

Most USB parallel printer adapters, even when the drivers are set up right, are not all that well suited to signaling to things other than printers.

For other parallel input or output tasks, you would likely be better served with something such as the FT245 or a similar USB IO chip. Or else use a USB capable micro-controller and write a program to run on it which will set pins in response to USB messages. Or even a micro-controller with a USB-serial interface (such as the arduino board Majenko suggested) where you can send it a message through the host OS serial port API to set the IO pins to whatever (parallel) value you wish.

An additional factor to be aware of is that while USB can have very high throughput, it also has a quite high latency (delay) compared to old-fashioned parallel ports. This can be very problematic in situations where the computer must really interact with external hardware, or communicate in a conversation of short messages. If that problem arises it may be necessary to move the lowest level of the software task to a micro-controller on the far side of the USB which will have fast control of its own IO pins, and use the USB for higher level communication between that and the PC.


I'm not sure if there is a standard class definition in the USB spec for parallel ports, as there is for serial ports. If there is no such standard class definition, then it will take a custom operating system driver. This driver presents a parallel port interface on the OS side and talks to your USB device on the other side.

Microchip had a similar problem with their ICE2000 emulator. It has a native parallel port interface. When this was no longer available on newer machines, they provided a USB to parallel port converter to use the ICE2000 via a USB port. I don't know whether that was a generic USB to parallel converter and showed up as a parallel port in the OS, or whether Microchip added special hooks in their ICE2000 host code for this converter. It might be worth talking to your local Microchip FAE to find out more.


You question, as phrased, is most likely off topic as this is a forum for hardware design, but let me see if I can help you.

What you are describing is a situation where in order for a piece of hardware to be used with a computer, you require both working hardware and appropriate software. (definately on target for this forum) In the case of Microsoft Windows, that software usually takes the form of a device driver. Further that driver is often specific to the version of Windows being used, For example 64 bit Windows wants a 64 bit driver while 32 bit Windows wants a 32 bit driver.

Your best bet is to simply buy a USB to parallel adapter that comes with the appropriate drivers to make it appear to Windows as a parallel port. Much cheaper and easier than trying to write software for a device that lacks the appropriate drivers.


Not the answer you're looking for? Browse other questions tagged or ask your own question.