Such converters implement the
USB printer class
on the USB end, and a suitable parallel port for old-style printers
on the other end.
Simple, but nothing more.
Every byte transferred over USB is sent to the parallel interface with a SROBE pulse
Three parallel status lines are reported to the USB side:
Handshaking ist built into the converter and is hard-wired
Querying the IEEE1284 device ID from printer via nibble mode and forwarding to USB side
As a negative side effect, such adapters keep their data port in high-impedance state
Therefore, a latch is needed for capturing the last output data byte.
Such adapters often said to have a “bidirectional” interface.
This is only true for the
in Nibble Mode, not for the 8-bit data port.
However, forget using the IEEE1284 Negotiation for your data input!
It will definitely introduce more trouble than you ever expect.
If you really need a higher data input rate,
forget using your USB→ParallelPrinter adapter for that purpose.
For querying status lines
PaperEnd (Bit 5, Pin 12)
Online (Bit 4, Pin 13)
Error (Bit 3, Pin 15)
no extra hardware is necessary. Changing software by using my inpout32.dll is the only task.
Pin numbers are for D-Sub 25, not for the 36-pin Centronics printer connector!
For the 8 Data bits you need a latch oder flipflop circuit!
Valid data only appears some microseconds around
(Edge-triggered) flipflops advance over latches that clock polarity
is out of concern.
If someone needs less bits, a smaller flipflop
IC is still suitable.
For six bits, use 74HC(T)174.
For four bits there are 74HC(T)175, '192, '193, '195 …
or CMOS 4029, 4035, 4042 …
In case of older bi-polar ICs (74LS), the IC must be powered externally.
But even for CMOS, you should consider external powering when available.
Hint: In no case, CCD picture data should be transferred via such a “solution”!
It would be incredile slow!
In such a case, a microcontroller, customized firmware, and customized DLL is necessary.
This board is an excellent starting point
with a good price.
“Non-Linar” Routing or More I/O Lines
Some applications need other output or input lines, so, once building
an adapter with the flipflop IC, one can swap the lines between the two sides.
But that requires some more virtualization inside inpout32.dll,
which is currently not implemented.
More complex circuitry at the output of your USB ParallelPrinter converter
may enable more output (12) and input (5) lines but needs a very
specialized build of inpout32.dll for parallel-port virtualization.
Ask me if you need support in this case!
Parallelizing of S3 to S3..S5 boosts speed by factor 3.
Therefore 3 kBit/s. The absolute limit for such an adapter.
More speed for synchronous-serial input
The added CMOS flipflops parallelize one serial input onto three parallel lines.
This will boost bit-serial devices by factor 3.
Sounds not much, but it's still worth to implement for some cases.
The majority of chip programmers I've seen uses BUSY for serial read data.
Therefore I choosed that pin for de-serializing.