GY-63_MS5611/libraries/ParallelPrinter
2021-05-28 13:17:38 +02:00
..
.github/workflows add arduino-lint 2021-05-28 13:17:38 +02:00
examples 2021-01-29 2021-01-29 12:31:58 +01:00
test 2021-01-29 2021-01-29 12:31:58 +01:00
.arduino-ci.yml 2021-01-29 2021-01-29 12:31:58 +01:00
keywords.txt 2021-01-29 2021-01-29 12:31:58 +01:00
library.json 2021-01-29 2021-01-29 12:31:58 +01:00
library.properties 2021-01-29 2021-01-29 12:31:58 +01:00
LICENSE 2021-01-29 2021-01-29 12:31:58 +01:00
ParallelPrinter.cpp 2021-01-29 2021-01-29 12:31:58 +01:00
ParallelPrinter.h 2021-01-29 2021-01-29 12:31:58 +01:00
README.md 2021-01-29 2021-01-29 12:31:58 +01:00

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