Forum: Mikrocontroller und Digitale Elektronik POS Thermodrucker TL60III über RS232: ESC/POS Befehle?


von Andre G. (andgst01)


Lesenswert?

Schönen Donnerstag Abend,

ich habe vor kurzem einen Thermodrucker (TL60III von "custom") gekauft 
mit der Absicht den über einen Mikrocontroller anzusteuern.

Allerdings habe ich Schwierigkeiten beim Ansteuern des Druckers über die 
serielle Schnittstelle (erst mal vom PC aus).

Einfach nur Text ausgeben geht problemlos.
Aber ich verstehe nicht ganz wie ich "Befehle" an den Drucker senden 
kann.

Es gibt da die sogenannten ESCPOS Befehle die bei solchen Druckern 
üblich sind, bestimmte Bytes mit denen man Formatierung, Schriftgröße, 
das Schneidwerk, ... steuern kann.
Ich habe auch einiges dazu gefunden, nur keine Tabelle mit den Befehlen 
und den HEX Bytes die dafür zum Drucker gesendet werden müssen.
Auf der Website des Herstellers finde ich auch nichts dazu.
Ebensowenig im User-Manual des Druckers.

Ich wäre über jede Hilfe dankbar ...

von Dieter (Gast)


Lesenswert?

Hilft das eventuell weiter:

https://aures-support.com/DATA/drivers/Imprimantes/Commande%20ESCPOS.pdf

Nicht speziell für diesen Drucker, eher allgemein.

von Andre G. (andgst01)


Lesenswert?

Ja, das ist perfekt!

Aber das offenbart das nächste Problem:
Wenn ich z.B. 1B69 an den Drucker sende (der Code um das 
Papierschneidwerk zu aktivieren) dann druckt der Drucker einfach 1B69 
als Text.

von Dieter (Gast)


Angehängte Dateien:

Lesenswert?

Wenn ich Dich richtig verstehe schickst Du den Text "1B69". Das
kann nicht funktionieren, es geht um die HEX Codes 0x1B 0x69.
In C würder das als String so aussehen: "\x1B\x69" (geht aber
so nur wenn Du von einem C Programm aus diesen String an den
Drucker schickst).

Alternativ kannst Du vielleicht mit einem Teminalprogramm die
Hex Bytes so schicken, wenn das nicht geht die Datei im Anhang mit
dem Terminalprogramm an den Drucker schicken. In der Datei sind
die zwei Bytes 0x1B 0x69.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

0x1B ist ein nicht druckendes Zeichen (ASCII Code dezimal 27 für ESC), 
in deinem Fall gefolgt von 0x69 (dezimal 105, ein kleines i).

Das ESC kannst du am PC mit dem 'Alt-Trick' erzeugen. Alt-Taste drücken, 
am Ziffernblock 2 und 7 eingeben und die Alt-Taste wieder loslassen.
Vom MC lässt sich einfach das 27 oder 0x1B per UART oder was auch immer 
an den Drucker senden.

von Andre G. (andgst01)


Lesenswert?

Gut, dass mit dem "Datei senden" hat funktioniert, der Drucker hat 
zumindest keinen Text ausgegeben.
Aber das Schneidwerk wurde nicht betätigt.
Hmmm ....

Ich glaube ich werde wohl den Hersteller fragen müssen ...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Andre G. schrieb:
> Aber das Schneidwerk wurde nicht betätigt.

Schieb mal noch ein CR oder CR/LF hinterher. Also 0x13 und 0x10.

von Andre G. (andgst01)


Lesenswert?

Blöde Frage:
Mit welcher Software erstellt / bearbeitet man solche HEX-Dateien?

von Andre G. (andgst01)


Lesenswert?

Gut, ich habe jetzt mal direkt im Terminal Programm die Bytes gesendet, 
gefolgt von CR und LF und das funktioniert!
Der Drucker schneidet das Papier!

Danke!

(Ich habe eine Terminal Software gefunden bei der man HEX mit dem 0x 
Präfix eingeben kann, damit klappt das alles wunderbar!)

: Bearbeitet durch User
von Dieter (Gast)


Lesenswert?

Diese ESC/POS Dokumentation passt eventuell besser zu Deinem Drucker,
zumindest ist sie u.a. für das Modell TL60 gedacht:

https://kiosksoft.ru/device_files/download/167

Beitrag #7099909 wurde vom Autor gelöscht.
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Andre G. schrieb:
> Mit welcher Software erstellt / bearbeitet man solche HEX-Dateien?

Ich benutzte HxD (für Windows):
https://mh-nexus.de/en/programs.php

Anbei die damit erstellte Sequenz zum Papierschneiden.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Matthias S. schrieb:
> Schieb mal noch ein CR oder CR/LF hinterher. Also 0x13 und 0x10.

Ich sach' ja - wenn man bisschen dämlich ist, dann kann man nich' dazu.

Es muss natürlich 0x0D und 0x0A heissen. Nur das ist CR und LF.

von Andre G. (andgst01)


Lesenswert?

Matthias S. schrieb:
> Matthias S. schrieb:
>> Schieb mal noch ein CR oder CR/LF hinterher. Also 0x13 und 0x10.
>
> Ich sach' ja - wenn man bisschen dämlich ist, dann kann man nich' dazu.
>
> Es muss natürlich 0x0D und 0x0A heissen. Nur das ist CR und LF.

Ich habe mein Terminal Programm so eingestellt dass bei jedem Drücken 
der Enter Taste ein CR und LF gesendet wird, deshalb ist mir dein Fehler 
nicht aufgefallen ...

von Dieter (Gast)


Lesenswert?

Ob das CR (0x0D) eine Wirkung hat kann man beim TL60 konfigurieren
(Parameter Autofeed).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.