Mit Standarddienstprogrammen
Da serielle Schnittstellen unter Linux durch Dateien repräsentiert werden, können Standardwerkzeuge wie echo und cat verwendet werden, um mit ihnen zu interagieren. stty kann verwendet werden, um die Einstellungen der Schnittstelle zu ändern. Sehen wir uns an, wie jede dieser Anwendungen verwendet wird.
Mit stty können Sie die Baudrate der Schnittstelle, die Anzahl der Datenbits, die Parität, den Handshake-Typ (auch als Flow Control bekannt) und andere Parameter festlegen. Dies kann notwendig sein, um mit einem Gerät oder einer Anwendung zu interagieren, da die Parameter in den meisten Fällen übereinstimmen müssen, damit die Verbindung funktioniert.
Hinweis von Nick:
Ich habe die folgende Demonstration auf Debian 11 (Bullseye) mit einem SP-POS88VMF-Drucker durchgeführt.
Sie können die bereitgestellten Befehle jedoch auch mit einer Nullmodem-Verbindung zwischen zwei seriellen oder USB-zu-Seriell-Ports auf demselben Computer ausprobieren. In diesem Fall müssen Sie den cat-Befehl so anpassen, dass er auf den anderen verbundenen Port lauscht, nicht auf den sendenden.
Verwenden Sie den folgenden Befehl, um die aktuellen Einstellungen Ihrer Schnittstelle aufzulisten:
sudo stty -a -F <your port>
Und dies ist ein Beispielbefehl, der die Baudrate des ttyS0-Ports auf 9600 setzt, die Datenbits auf 8 setzt und RTS/CTS-Handshaking aktiviert:
sudo stty -F /dev/ttyS0 9600 cs8 crtscts
Wenn die richtigen Einstellungen ausgewählt sind, können wir mit echo Daten an das Gerät senden. Es ist möglich, mit echo einfachen Text an einen seriellen Port zu senden, so:
echo 'TEXT' > /dev/ttyS0
Um dies zu tun, müssen Sie sich jedoch als Superuser anmelden. Dies kann mit dem Befehl „su -“ erfolgen.
In unserem Fall werden spezielle ASCII-Symbole wie ESC und Carriage Return benötigt, um den angeschlossenen Drucker vollständig nutzen zu können. Eine Möglichkeit, dies zu tun, ist die Verwendung von echos Argument -e und Escape-Sequenzen. Eine Escape-Sequenz für ASCII-Zeichen beginnt mit \x, gefolgt von einer hexadezimalen Zahl, die dem Zeichen entspricht.
Zum Beispiel kann das Wort „TEXT“ mit Escape-Sequenzen wie folgt ausgegeben werden:
echo -e '\x54\x45\x58\x54'
Wir werden die folgenden Nachrichten senden:
1B 40 |
(ESC @, Initialize) |
1B 6D |
(ESC m, Full Cut) |
4C 49 4E 45 20 31 |
("LINE 1") |
1B 21 80 |
(Enable Underline) |
4C 49 4E 45 20 32 |
("LINE 2") |
0D 0A |
(CR LF, New Line) |
1B 6D |
(Full Cut) |
Das Argument -e wird benötigt, um die hexadezimalen Escape-Sequenzen „\x“ zuzulassen. So sieht es im Terminal und auf dem resultierenden Ausdruck aus:
Während echo zum Senden von Daten über eine serielle Verbindung verwendet werden kann, kann cat zum Empfangen verwendet werden. In unserem Fall wird der Drucker auf Standard-ESC/POS-Anfragen nach Status- und ID-Informationen antworten. Das bedeutet, dass wir die Antworten abfangen müssen. Zuerst starten wir cat, lauschen auf dem Gerät ttyS0 und leiten die Ausgabe in eine Textdatei um:
cat /dev/ttyS0 > examplefile
Die Anwendung muss weiterlaufen, um Daten zu empfangen, daher muss ein neues Terminalfenster oder ein neuer Tab geöffnet werden, um Anfragen an unser Gerät zu senden. Wir verwenden echo, um Folgendes zu senden:
1D 49 31 |
(Request model ID) |
1D 49 32 |
(Request type ID) |
Da die Ausgaben im Hexadezimalformat bereitgestellt werden, ist die direkte cat-Ausgabe, die in „examplefile“ aufgezeichnet wurde, für Menschen nicht lesbar. Stattdessen werden wir die Datei durch hexdump laufen lassen:
Gtkterm verwenden
Linux bietet auch serielle Terminals wie minicom und gtkterm, die umfassend mit seriellen Schnittstellen interagieren können, sowohl Eingabe als auch Ausgabe verarbeiten, mehr Formatierungsoptionen bieten und insgesamt vieles einfacher machen.
Als Beispiel probieren wir gtkterm aus. Ähnlich wie stty muss gtkterm mit Kommandozeilenargumenten gestartet werden, um die Verbindungseinstellungen festzulegen, falls die Standardwerte nicht geeignet sind.
Hinweis von Nick:
Während Minicom ein äußerst flexibles Tool ist, machen die komplizierten Bedienelemente es für Anfänger ungeeignet und in einem kurzen Leitfaden schwer abzudecken. Wenn du anfangen möchtest, etwas über Minicom zu lernen, beginne mit seiner Manpage, um nicht verwirrt zu werden, sobald du die App startest.
Einige nützliche Optionen umfassen lokales Echo (um die von Ihnen gesendeten Daten auf Ihrer Seite zu duplizieren), Protokollierung, Hexadezimalansicht und das Senden von Hex-Daten. Beachten Sie außerdem die Anzeigen unten rechts – sie zeigen die Zustände der DTR-, RTS-, CD-, DSR- und RI-Signalleitungen – das ist eine weitere Möglichkeit zu sehen, dass das Gerät verbunden und bereit ist, Daten zu empfangen.