Microprinting

Wechseln zu: Navigation, Suche
Microprinting
TEC TRST-53 twitter receipt.jpg
Quittungsdrucker zum Drucken der Twitter-Timeline
Status Abgeschlossen
OrganisatorIn Basti, MyJP
InteressentInnen
Download:

Download (extern)

In diesem Projekt geht es darum, mit einem gewöhnlichen Supermarkt-Quittungsdrucker Dinge auszudrucken. Neben der Twitter-Timeline, die sich für ein solches Projekt fast schon aufzwingt, wollen weitere Ideen folgen. Im Oktober 2012 waren wir mit dem Quittungsdrucker auf dem Hackover (Weiteres dort).


Epson TM-T88P

Drucken direkt per Shell

echo "Test" > /dev/lp0

und demnach auch in Python mit dem Workaround

import os
output = "Test per Python!"
os.system("echo " + output + " > /dev/lp0")

funktionierte.

Als Zeichensatz kommt bei diesem Drucker CP437 zum Einsatz. Das heißt: Er kann Umlaute usw. drucken, erwartet sie aber an den gezeigten Positionen in der Zeichentabelle.

Ein
output.encode('cp437','replace')
sorgt für die nötige Umwandlung. In CP437 (dem "IBM Zeichensatz") nicht verfügbare Unicodezeichen werden durch "?" ersetzt.


TEC TRST-53

Der TEC TRST-53 beim Drucken von Twitter-Updates

Diesen Quittungsdrucker konnten wir über einen Digitus DA-70146 Seriell2USB Konverter via pySerial ansprechen.


Minimales Printing-Script

import serial
printer = serial.Serial("/dev/ttyUSB0", 19200)
printer.write("string")

Wenn kein \n am Ende des Strings steht, wartet der Drucker, bis die Zeile voll ist und druckt sie erst dann.


Twitter-Script / Hashtag-Printing

Auf GitHub liegt unser Hashtag-Printing-Script, mit dem via Twitter-1.1-API Tweets abgerufen und gedruckt werden können:

$ ./hashtag_printing.py -h
usage: hashtag_printing.py [-h] [-d DEVICE] [-b BAUDRATE] [-t] [-r] [-e]
                           [-s SLEEP]
                           searchterm

Prints tweets containing given search term on serial receipt printer.

positional arguments:
  searchterm            term to search for (e.g. #yourHashtag)

optional arguments:
  -h, --help            show this help message and exit
  -d DEVICE, --device DEVICE
                        device name or port number (default: /dev/ttyUSB0)
  -b BAUDRATE, --baudrate BAUDRATE
                        baud rate (default: 19200)
  -t, --dry             dry run (printing to stdout instead of serial receipt
                        printer) (default: off)
  -r, --replies         do not filter @replies out
  -e, --retweets        do not filter Retweets out
  -s SLEEP, --sleep SLEEP
                        sleep between searches (in seconds) (default: 60)
TEC TRST-53 twitter receipt.jpg


Font-Demo

Folgendes Script druckt die 6 zur Verfügung stehenden Schriftarten aus. Die mit "\x1b" beginnenden Strings sind Steuerzeichen und teilen den Drucker mit, in welcher Schriftart er die folgenden Zeichen drucken soll. Ein Reset auf Standardwerte ist nach dem Drucken einer solchen Zeile sinnvoll, um Verwirrungen zu vermeiden ;-)

Sonstiges

Weitere Features sind z.B. Abschneiden des Bons oder Drucken von Barcodes in verschiedenen Formaten.

# cut & go
printer.write("\x1b\x4A\x9C\x1b\x69")
 
# barcode (JAN13 (EAN) with character code "4029764001807"; see manual page 50 for details)
printer.write("\x1d\x6b\x024029764001807\00")

Weiteres

  • Der Drucker benutzt aktuell die ISO-646-DE Kodierung in den unteren 128 Positionen seines CP437 Zeichensatzes, daher werden die Zeichen @[\]{|}~ als §ÄÖÜäöüß dargestellt.
    • Update Umgestellt: @[\]{|} funktioniert, dafür §ÄÖÜäöüß nicht mehr ...
  • Der TEC TRST-53 ist zumindest soweit baugleich mit einem Citizen CBM 231, sodass dessen Handbuch genutzt werden kann. Darin ist auf Seite 56 visualisiert, worin das aktuelle Problem besteht, und auf den Seiten 21/22 stehen die DIP-Schalter-Stellungen, mit denen Abhilfe geschaffen werden kann.
  • Wollte man doch in Python eine Konvertierung vornehmen, bietet sich
    string.maketrans
    an.
  • In der Standardeinstellung druckt der Drucker 48 Zeichen pro Zeile (Monospace). Andere Fonts können mit dem oben gezeigten Fonttest-Script ausprobiert werden.

Library mit Bilder- & Barcode-Funktionalität

Um die Handhabung des Druckers zu vereinfachen, wurde eine Library eines verwandten Druckers als Basis genommen und unseren Bedürfnissen angepasst:

TEC TRST-53 Microprinter-Library auf GitHub

Weiterführendes