.. | ||
.github/workflows | ||
examples | ||
test | ||
.arduino-ci.yml | ||
keywords.txt | ||
library.json | ||
library.properties | ||
LICENSE | ||
ParallelPrinter.cpp | ||
ParallelPrinter.h | ||
README.md |
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