Brief Overview of the Retro-Printer

Retro-Printer Overview

Initially designed to accept output sent by a program to an Epson standard printer connected  to a Centronics port and convert that data into a format which is then sent to a connected USB or network printer the Retro-Printer Module now supports a whole host of different applications.  The Retro-Printer Module has been proven to work with a wide range of equipment, and can work with either centronics printer data capture, or serial printer data capture.
Our modular approach to the software development allows for rapid development of new options.  The software is split into several parts, each of which can be configured to work in specific applications.
  • The Capture Processor
  • The Printer Emulator
  • The Output Processor

With each Retro-Printer Module, we supply a formatted SD card image, containing the OS (operating system) for a Single Board Computer, plus the full suite of standard Processors.  We currently support the following Single Board Computers:

  • Any Quad-Core Raspberry Pi (eg Raspberry Pi 2 Model B; Raspberry Pi 3; or Raspberry Pi 3 Model B+; Raspberry Pi 4)
  • Banana Pi M1 or Banana Pi M1+
  • Orange Pi PC

The Capture Processor

The Capture Processor monitors data received by the Centronics port on the Retro-Printer Module or a USB to serial port on the Raspberry Pi.   This module is designed to run as quickly as possible in order to avoid losing any data and supports various handshaking settings, a printer delay and a timeout setting to cope with the varying speed and signal approaches of connected equipment.

It can be configured to ignore certain codes (such as the HP Printer Job Language (PJL) container used by LaserJets), interpret the incoming data as 7 or 8 bit data, and even whether to print control codes as printable characters.

The Capture Processor also manages the various options for the offline switch.

The incoming data is captured to a raw file and once a given timeout is exceeded (or if you use the offline switch for job control), then the capture processor assumes that the printer job has completed and passes control to the selected Printer Emulator.

The Printer Emulator

The Retro-Printer emulators support the following conversion modes:

  • Simple Spool: all captured data is copied direct to a single file on the SD card (or a connected USB stick).  The only changes made to the captured data are to deal with line endings if you wish to convert between Windows / Linux or Mac line endings.  This is ideal for capturing plain text sent to a parallel port by a piece of equipment (for example for logging transactions).  It can also convert between different character sets if necessary
  • Extract Text: all Epson control codes are stripped from the captured data and the resulting plain text is then spooled as per the simple spool option.
  • ESC/P2 Emulation: this understands most text and graphic Epson ESC/P and ESC/P2 control codes, and uses this to create PDF renders of each page from the original printed output.  This is based on our own GNU Public License ESC/P2 to PDF conversion routines.
  • Epson ESC/Page Emulation: this has been designed to emulate the Epson LPS300 printer (graphics mode)
  • Genicom Tally MTPL Emulation: this converts data designed for the later Genicom Tally Line Printers (such as the T2340 Line Printer) and incorporates both MTPL and MTPL+Epson emulation modes
  • HP Printer Emulation: this converts HP standard PCL3 to PCL5 printer data to create PDF renders of each page from the original printed output.
  • HP Plotter Emulation: this converts HP standard PGL plotter data to create PDF renders of each page from the original printed output.
  • IBM ProPrinter Emulation: this converts IBM ProPrinter data to create PDF renders of each page from the original printed output.
  • Mannesmann Tally MT600 Emulation: this converts the MT600 Line Printer data.
  • PostScript Emulation: this converts PostScript printer data to create PDF renders of each page from the original printed output.
  • Printronix Emulation: this converts both Printronix-P and Printronix-S series printer codes to create a PDF render.
  • Seiko Emulation: this provides a simple emulation for Seiko range of printers (currently limited to STP printers) to create PDF renders of each page
  • Seiko QT-2100P Emulation: this interprets the readings from the Seiko QT-2100 Quartz / Manual Watch Timer originally sent to its dedicated printer (QT-2100P)
  • Siemens PT-88 Emulation: this is designed to interpret the data sent from a Siemens PLC to their dedicated PT-88 dot matrix printers.
  • Tandy DMP Emulation: this converts Tandy DMP printer codes to create PDF renders of each page – it does not support switching to IBM Mode at present.
  • Plain Text Emulation: this converts plain text data and processes the data to either quickly print to a connected printer, or create PDF renders of each page (which is much slower).

The Output Processor

This provides you with the various options for how to handle the converted data.

The simplest is to do nothing, so that you can access the captured data directly over a network connection, for example this can be used to extract data from an old unsupported hard disk format, where your only connection option is to print the data.  It is also useful for creating e-documents.  For some customers, we have written specific output processing options such as:

  • Create a CSV file from tabulated data;
  • Write the captured information to a TCP/IP server HTTPS webs server;
  • Write the captured data to a database;
  • Email the captured data.

The next option is to copy the output of the program to the screen on the Single Board Computer, so that you can see a visible representation of the captured data.

Finally, you can configure the Retro-Printer software to automatically print the PDF created by the Conversion Processor, using any network or USB printer installed in Linux, using CUPs. The current version of the Retro-Printer Manual sets out the wealth of configuration options available and how to set up that configuration dependent upon your requirements.