How to send raw data to IEEE-1284 Parallel Printer Cable

parallel portusb device

At my university we have to do some project using parallel port (I know ridiculously old port). We bought a USB to Parallel Printer cable used to connect old parallel printers and the device is an IEEE-1284 Parallel Printer this means I can't see any LPT1, LPT2, LPT* in hardware devices.

Following this guide and using this program to send data we tried to send data to parallel port connecting:

  • BUSY (pin 11) to any Ground (pins 19-29)
  • SELECT (pin 13) to +5V
  • STROBE (pin 1) to ACK (pin 10)

We added a Generic printer as the webpage says:

I then installed a printer by clicking Add A Local Printer from
Control Panel → Printers Then select the Port to be USB001 (Virtual
Printer Port for USB).

Select from the list of printer Generic / Text
Only This loads the proper driver. Then from the Printer Properties
Advanced settings I turned off Spooling the Spool Print Documents
selection and selected Print Directly To The Printer.

This works perfect I see my printer in Ready state when plugin in the cable so the port is the correct one. When I try to send data using the Microsoft program no matters what I send .txt files, raw file containing 0xFF or 0x00 to toggle the entire data port nothing happens on the Data Port. Some status pins go to high or low state permanently no matter what I send so at least I know something is reaching to the port.

What else can we try? Is there any way to get it working? We already spent the money on this cables so we want to try to get them working.

Thank you very much for your help!

Best Answer

The basic "Centronics" printer port protocol uses a simple 2-wire handshake in which the PC asserts a strobe signal until the printer asserts an acknowledge signal. This repeats for each byte transferred.

If you want to "bit-bang" individual pins on the parallel port, you can't use the Windows printer drivers; you need to access the hardware at a lower level. If you're using a USB-to-parallel converter, you'll have to read its documentation.