Letzte Woche habe ich mir ein neues Spielzeug angeschafft: Ein Epson TM-T20 Thermo-Bondrucker. Ein echter Kassenzetteldrucker.
Ich möchte mein Bag-in-Box-Kassenprogramm Bib2011 darauf portieren, so dass Kunden-Belege wesentlich schneller und günstiger gedruckt werden können. Das funktioniert nun auch schon. Bis das so weit war, war allerdings wirklich erst einmal mein Spieltrieb gefordert. Das Gerät wird nicht als normaler (grafischer) Drucker angesteuert sondern als zeichenorientierter Drucker mit Formatierungs-Steuerzeichen. Man sagt dem Drucker als zunächst welche Größe die kommenden Zeichen haben sollen und dann schickt man einfach ASCII-Zeichen hin.
Die Druckersprache ESC/P bzw. ESC/POS ist für diesen Zweck gängig und wird von fast allen POS-Druckern benutzt. Irritierend ist dabei, dass manche Befehle, Dokumentationen und auch laufender Code im Netz frei verfügbar ist, teilweise auch vom Hersteller selbst. Andererseits beginnt die Bedienungsanleitung des Geräts mit der Aussage, dass man das ESC-Reference-Manual nur gegen Unterzeichnung eines NDA erhalten kann:
To use ESC/POS commands, you need to agree to a nondisclosure contract first and obtain the ESC/POS Application Programming Guide.
Demzufolge enthält die Anleitung auch nur eine Liste der unterstützten ESC-Befehle, nicht aber deren Syntax.
Nach einigem hin und her wurde ich allerdings fündig: Die
Anleitung des größeren Schwestermodells TM-T85 enthält eine umfangreiche ESC/P-Referenz. Auch nicht komplett, ich habe schon andere Befehle gefunden die da nicht drin sind und die der Drucker auch versteht, aber das meiste ist drin.