diff --git a/ParallelPrinter.cpp b/ParallelPrinter.cpp index c32754c..9521dae 100644 --- a/ParallelPrinter.cpp +++ b/ParallelPrinter.cpp @@ -1,7 +1,7 @@ // // FILE: ParallelPrinter.cpp // AUTHOR: Rob Tillaart -// VERSION: 0.2.1 +// VERSION: 0.2.2 // PURPOSE: parallel printer class that implements the Print interface // DATE: 2013-09-30 // URL: https://github.com/RobTillaart/ParallelPrinter @@ -9,8 +9,8 @@ // HISTORY // 0.1.0 2013-09-30 initial release // 0.2.0 2020-05-26 refactor, examples -// 0.2.1 2020-01-04 arduino-CI + unit test - +// 0.2.1 2021-01-04 arduino-CI + unit test +// 0.2.2 2021-01-14 update readme, add linefeed(), add keywords.txt #include "ParallelPrinter.h" @@ -67,13 +67,13 @@ void ParallelPrinter::reset() // write() implements the virtual write of the Print class size_t ParallelPrinter::write(uint8_t c) { - if (c == '\t') + if (c == '\t') // TAB { uint8_t spaces = _tabSize - _pos % _tabSize; for (uint8_t i = 0; i < spaces; i++) processSingleChar(' '); return spaces; } - if (c == '\n') + if (c == '\n') // LINEFEED { for (uint8_t i = 0; i < _lineFeed; i++) { diff --git a/ParallelPrinter.h b/ParallelPrinter.h index 0e1a225..18a0d55 100644 --- a/ParallelPrinter.h +++ b/ParallelPrinter.h @@ -2,17 +2,20 @@ // // FILE: ParallelPrinter.h // AUTHOR: Rob Tillaart -// VERSION: 0.2.1 +// VERSION: 0.2.2 // PURPOSE: parallel printer class that implements the Print interface // DATE: 2013-09-30 // URL: https://github.com/RobTillaart/ParallelPrinter -// + #include "Arduino.h" -#define PARALLELPRINTER_VERSION (F("0.2.1")) + +#define PARALLELPRINTER_VERSION (F("0.2.2")) #define FORMFEED 12 +#define LINEFEED 10 + class ParallelPrinter: public Print { @@ -43,6 +46,7 @@ public: void printLineNumber(bool b) { _printLineNumber = b; }; void formfeed() { write(FORMFEED); }; + void linefeed() { write(LINEFEED); }; bool isOutOfPaper() { return digitalRead(_oopPin) == LOW; }; // n = typical 2000; use with care diff --git a/README.md b/README.md index 908a926..f06dce7 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,14 @@ # ParallelPrinter -Arduino library that implements a parallel printer - uses print interface +Arduino library that implements a parallel printer (driver) - implements the PRINT interface + ## Description -This **experimental** library defines a simple parallel printer object. +This library defines a parallel printer object. -It implements the **Print interface** to be able to print all datatypes using **print()** and **println()** +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**. @@ -22,46 +23,62 @@ Have fun! **Note:** This lib is a extended redo of the ParPrinter class. + ## Interface ### Constructor -- **ParallelPrinter()** uses default pins (10, 2, 12, \[3,4,5,6,7,8,9,10\]) +- **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. +- **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 -- **setLineLength(n)** idem -- **getLineLength()** idem -- **setPageLength()** idem -- **getPageLength()** idem -- **getLineNumber()** idem -- **getPageNumber()** idem -- **getPosition()** idem -- **setTabSize(n)** tabs are replaced by spaces. n can be 0 or any size! +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(n)** n = 1,2,3 1 = default -- **getLineFeed()** returns lineFeed set -- **printLineNr(b)** true, false +- **setLineFeed(lineFeeds)** lineFeeds = 1,2,3 1 = default +- **getLineFeed()** returns lineFeeds set +- **printLineNr(bool)** can be set to true, false -### Expert mode +### 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 diff --git a/keywords.txt b/keywords.txt new file mode 100644 index 0000000..5882960 --- /dev/null +++ b/keywords.txt @@ -0,0 +1,39 @@ +# Syntax Coloring Map For ParallelPrinter + +# Datatypes (KEYWORD1) +ParallelPrinter KEYWORD1 + +# Methods and Functions (KEYWORD2) +begin KEYWORD2 +reset KEYWORD2 +write KEYWORD2 + +setLineLength KEYWORD2 +getLineLength KEYWORD2 +setPageLength KEYWORD2 +getPageLength KEYWORD2 + +getLineNumber KEYWORD2 +getPageNumber KEYWORD2 +getPosition KEYWORD2 + +setTabSize KEYWORD2 +getTabSize KEYWORD2 +setLineFeed KEYWORD2 +getLineFeed KEYWORD2 + +printLineNumber KEYWORD2 +formfeed KEYWORD2 +linefeed KEYWORD2 + +isOutOfPaper KEYWORD2 +setStrobeDelay KEYWORD2 +getStrobeDelay KEYWORD2 + + +# Instances (KEYWORD2) + +# Constants (LITERAL1) +PARALLELPRINTER_VERSION LITERAL1 +FORMFEED LITERAL1 +LINEFEED LITERAL1 diff --git a/library.json b/library.json index 930e885..789f619 100644 --- a/library.json +++ b/library.json @@ -15,7 +15,7 @@ "type": "git", "url": "https://github.com/RobTillaart/ParallelPrinter.git" }, - "version":"0.2.1", + "version":"0.2.2", "frameworks": "arduino", "platforms": "*" } diff --git a/library.properties b/library.properties index 5952640..79de375 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ParallelPrinter -version=0.2.1 +version=0.2.2 author=Rob Tillaart maintainer=Rob Tillaart sentence=Experimental (not complete) library to connect a parallel printer to Arduino.