Arduino library that implements a parallel printer - print interface
Go to file
Rob Tillaart 4c7c4d06ad
update 0.2.2 (#4)
2021-01-14 20:00:47 +01:00
.github/workflows Arduino ci (#2) 2021-01-04 18:18:14 +01:00
examples 0.2.0 version 2020-06-25 10:19:33 +02:00
test Arduino ci (#2) 2021-01-04 18:18:14 +01:00
.arduino-ci.yml Arduino ci (#2) 2021-01-04 18:18:14 +01:00
LICENSE Arduino ci (#2) 2021-01-04 18:18:14 +01:00
ParallelPrinter.cpp update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00
ParallelPrinter.h update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00
README.md update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00
keywords.txt update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00
library.json update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00
library.properties update 0.2.2 (#4) 2021-01-14 20:00:47 +01:00

README.md

Arduino CI License: MIT GitHub release

ParallelPrinter

Arduino library that implements a parallel printer (driver) - implements the PRINT interface

Description

This library defines a parallel printer object.

It implements the Print interface to be able to print all datatypes using write(), print() and println() The printer writes every byte over 8 parallel lines including a STROBE (clock) pulse, while waiting for the connected printer not to be BUSY or OUT OF PAPER.

This library is meant to be a starting point to make a "printer driver" for a specific parallel printer. These can often be bought in 2nd hand stores or so.

Have fun!

Note: This lib is a extended redo of the ParPrinter class.

Interface

Constructor

  • ParallelPrinter() uses default pins (13, 2, 12, [3,4,5,6,7,8,9,10])
  • ParallelPrinter(strobe, busy, oop, arr) define 3 control pins + 8 datapins (= arr)
  • begin(linelength, pagelength) set line and page length parameters

Print interface

  • write(c) send a single byte to printer, implements Print interface. Therefor all print() and println() functions will work.
  • formfeed() to eject current page or forced go to the next page.
  • linefeed() send a linefeed. The number of actual lines is set by setLineFeed()

Config

These settings are pretty straightforward.

  • setLineLength(lineLength) idem
  • getLineLength() returns the current line length.
  • setPageLength(pageLength) idem
  • getPageLength() returns the current page length.
  • getLineNumber() returns current line number.
  • getPageNumber() returns current page number.
  • getPosition() returns the position on a line.
  • setTabSize(tabsize) tabs are replaced by spaces. n can be 0 or any size!
  • getTabSize() returns tabSize set
  • setLineFeed(lineFeeds) lineFeeds = 1,2,3 1 = default
  • getLineFeed() returns lineFeeds set
  • printLineNr(bool) can be set to true, false

Expert mode

  • isOutOfPaper() to check paper tray before printing starts.
  • setStrobeDelay(n = 2000) make the strobe pulse shorter == faster printing allows tuning of performance. Default value = 2000. Time in microseconds.
  • getStrobeDelay() returns value set.

Note mechanical printers e.g. dot matrix, really do need a way to stop receiving data as they do not have large buffers.

See also

https://en.wikipedia.org/wiki/Parallel_port#Centronics

Future

  • Make a front end of a parallel printer, that accepts the clocked bytes and print them
  • derive e.g. an HP or an EPSON printer from this class.

Operation

See examples