![parallel to serial converter buffer parallel to serial converter buffer](https://www.electronics-tutorial.net/Mini-Projects/3-BIT-PARALLEL-to-SERIAL-DATA-CONVERTER/clip_image002.jpg)
- #PARALLEL TO SERIAL CONVERTER BUFFER HOW TO#
- #PARALLEL TO SERIAL CONVERTER BUFFER MANUALS#
- #PARALLEL TO SERIAL CONVERTER BUFFER ZIP FILE#
- #PARALLEL TO SERIAL CONVERTER BUFFER DRIVER#
- #PARALLEL TO SERIAL CONVERTER BUFFER MANUAL#
Remove a buffer near-full check on incoming data so the printer can continue to receive data (through the Arduino's RX buffer) even after it has requested flow control.
![parallel to serial converter buffer parallel to serial converter buffer](https://img.brainkart.com/imagebk8/VKmow20.jpg)
#PARALLEL TO SERIAL CONVERTER BUFFER ZIP FILE#
The new, v1.1 code is included in the zip file for this project. But debugging the problem uncovered bugs in the printer code too. Ultimately the problem was a deep buffer in the computer coupled with a delay seeing the XOFF flow-control from the printer that over-ran the printer's 2 kB buffer (1 kB in the arduino, 1 kB in the HP printer itself). Although I had tested the XON/XOFF flow control when I originally wrote the sketch, the implementation of banner in the computer ended up refreshing my knowledge of buffer management. Up to this point the printer interface had never had to print anything harder than a few Tiny Basic listings. That happened when I went to add the ability to print a banner to my retro-computer. Even if the manufacturer decides to keep some parts (for example, the firmware) private, describing the hardware in detail can be incredibly useful for customers.Īnyway, I think this project could be useful to anyone hoping to re-use an old Centronics parallel port printer with a modern device via a serial interface.Īs often happens, a new usage for something uncovers issues. It's too bad that modern proprietary hardware doesn't come with a service manual. I could tell, for example, that i could only sample the BUSY# signal to tell when it was OK to drive a new data byte instead of also looking at the ACK# signal too since I could see that the printer's circuitry used the same signal to clear the BUSY# signal and drive ACK# after each byte my firmware wrote to it. By looking at the schematic I could be assured that my electronics would work.
![parallel to serial converter buffer parallel to serial converter buffer](https://safe-software.gitbooks.io/fme-desktop-advanced-training-2018/content/DesktopAdvanced2WorkspaceDesign/Images/Img2.042.ParallelProcessingBuffererExample.png)
#PARALLEL TO SERIAL CONVERTER BUFFER MANUAL#
Despite this, the service manual was incredibly useful in building my little hack to allow serial access to the printer. The only thing it didn't include was a listing of the firmware running on the custom micro-controller in the printer. HP provided a manual (scan attached) that described the printer's operation in great detail including full schematics and parts list.
#PARALLEL TO SERIAL CONVERTER BUFFER MANUALS#
The thing that struck me while building this interface was the parallelism between the old service manuals and our current idea of Open Source Hardware.
#PARALLEL TO SERIAL CONVERTER BUFFER DRIVER#
One could also build this circuit in an enclosure and use driver chips to interface with a Centronics interface driven over a cable. I used a ribbon cable to connect to printer port pins + an internal 5V power line in the printer so my board could be powered by the printer through a schottky diode (allowing power from either USB or the printer). A cheap ebay board or one hand-built using any one of a number of converter chips can be substituted. I used a TTL-RS232 converter board I found at my hackerspace originally designed for some other development board. I put the Arduino and RS232 driver circuitry on a proto-board that fit inside the printer (with some slight modifications to the back panel to allow access to the RS232 DB-9 and USB connectors). Coupled with sensing the paper status signal on the Centronics interface, the Arduino can communicate back to a host system the printer status (powered and paper status). A resistor-divider provides a sense for the Arduino to know when the printer is powered. The Arduino can be powered by either an external computer (to load code, for example) or the printer (when using the RS232 interface) without a USB-connected computer back-powering the printer. We use a schottky diode to isolate the Arduino (and RS232 interface circuitry) from the printer circuitry. Since the Centronics parallel port is TTL-compatible, we connect the Arduino directly to the 8-bit data bus, the active-low Strobe signal, the active-high BUSY signal, the active-high PAPER EMTPY signal and the active-low RESET/INIT signal.
#PARALLEL TO SERIAL CONVERTER BUFFER HOW TO#
This project shows you how to use an Arduino Leonardo (I used an Arduino Pro-Micro clone) to provide a printer with two serial interfaces (CDC-class serial over USB and RS232 over the Arduino's TTL serial port). The Centronics parallel port interface is fairly simple to control in its most basic form - which is useful if you want to drive an old parallel-port printer.