With some extra components and
my inpout32.dll,
you get one! Almost:
Upto eight output lines, with output rate of about 100 kSa/s
Much more lines and speed than for Serial-to-USB adapters
Upto three input lines, with input rate of 1 kSa/s
Same as for Serial-to-USB adapters
No kernel hacks. No driver. Simple user-mode privilege.
Compatible from Windows 98 upto Windows 10 64 bit.
Perfect for serial microcontroller programming equipment, solves the
chicken-or-egg problem.
Technical Background
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:
Error
PaperEnd
Online
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
while non-communication.
Therefore, a latch is needed for capturing the last output data byte.
Not bidirectional?
Such adapters often said to have a “bidirectional” interface.
This is only true for the
IEEE1284 Negotiation
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.
Simple Solution
Input Only
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!
Output Too
For the 8 Data bits you need a latch oder flipflop circuit!
Valid data only appears some microseconds around
STROBE pulse.
(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.
Examples: