Utilisation des utilitaires standard
Étant donné que les ports série sont représentés par des fichiers sous Linux, des utilitaires standard tels que echo et cat peuvent être utilisés pour interagir avec eux. stty peut être utilisé pour modifier les paramètres du port. Voyons comment chacune de ces applications est utilisée.
Avec stty, vous pouvez définir le débit en bauds du port, le nombre de bits de données, la parité, le type de handshaking (également appelé contrôle de flux) et d’autres paramètres. Cela peut être nécessaire pour interagir avec un appareil ou une application, puisque la plupart du temps, les paramètres doivent correspondre pour que la connexion fonctionne.
Note de Nick:
J’ai exécuté la démonstration suivante sur Debian 11 (Bullseye) avec une imprimante SP-POS88VMF.
Cependant, vous pouvez également essayer les commandes fournies avec une connexion null-modem entre deux ports série ou USB-vers-série sur le même ordinateur. Dans ce cas, vous devrez modifier la commande cat pour écouter l’autre port connecté, et non celui qui envoie.
Utilisez la commande suivante pour lister les paramètres actuels de votre port :
sudo stty -a -F <your port>
Et voici un exemple de commande qui définit le débit en bauds du port ttyS0 sur 9600, les bits de données sur 8, et active le handshaking RTS/CTS :
sudo stty -F /dev/ttyS0 9600 cs8 crtscts
Avec les paramètres appropriés sélectionnés, nous pouvons envoyer des données à l’appareil avec echo. Il est possible d’envoyer du texte brut vers un port série avec echo, comme ceci :
echo 'TEXT' > /dev/ttyS0
Cependant, pour faire cela, vous devez vous connecter en tant que superutilisateur. Cela peut être fait avec la commande « su - ».
Dans notre cas, des symboles ASCII spéciaux, tels que ESC et Retour chariot, sont nécessaires pour tirer pleinement parti de l’imprimante connectée. Une façon de procéder consiste à utiliser l’argument -e de echo et des séquences d’échappement. Une séquence d’échappement pour les caractères ASCII commence par \x, suivi d’un nombre hexadécimal qui correspond au caractère.
Par exemple, voici comment le mot « TEXT » peut être affiché avec des séquences d’échappement :
echo -e '\x54\x45\x58\x54'
Nous enverrons les messages suivants :
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) |
L’argument -e est nécessaire pour autoriser les séquences d’échappement hexadécimales « \x ». Voici à quoi cela ressemble dans le terminal, et sur l’impression obtenue :
Bien que echo puisse être utilisé pour envoyer des données via une connexion série, cat peut être utilisé pour les recevoir. Dans notre cas, l’imprimante répondra aux requêtes ESC/POS standard concernant l’état et les informations d’identification. Cela signifie que nous devrons intercepter les réponses. Tout d’abord, nous allons lancer cat, en écoutant le périphérique ttyS0 et en redirigeant la sortie vers un fichier texte :
cat /dev/ttyS0 > examplefile
L’application doit continuer à s’exécuter pour recevoir des données ; il faut donc ouvrir une nouvelle fenêtre ou un nouvel onglet Terminal pour envoyer des requêtes à notre périphérique. Nous utiliserons echo pour envoyer ce qui suit :
1D 49 31 |
(Request model ID) |
1D 49 32 |
(Request type ID) |
Étant donné que les réponses seront fournies au format hexadécimal, la sortie directe de cat, qui a été enregistrée dans « examplefile », ne sera pas lisible par un humain. À la place, nous allons exécuter le fichier via hexdump :
Utilisation de gtkterm
Linux propose également des terminaux série comme minicom et gtkterm qui peuvent interagir de manière complète avec les ports série, en gérant à la fois l’entrée et la sortie, en offrant davantage d’options de mise en forme et en rendant les choses globalement plus faciles.
À titre d’exemple, nous allons essayer gtkterm. Comme pour stty, gtkterm doit être lancé avec des arguments en ligne de commande pour spécifier les paramètres de connexion, si les valeurs par défaut ne conviennent pas.
Note de Nick:
Bien que Minicom soit un outil très flexible, ses commandes compliquées le rendent inadapté à l’utilisation par les débutants et difficile à couvrir dans un guide rapide. Si vous souhaitez commencer à apprendre Minicom, commencez par sa page man afin d’éviter d’être perdu une fois l’application lancée.
Parmi les options utiles, on trouve l’écho local (pour dupliquer les données que vous envoyez de votre côté), la journalisation, l’affichage hexadécimal et l’envoi de données hexadécimales. Notez également les indicateurs en bas à droite : ils affichent l’état des lignes de signal DTR, RTS, CD, DSR et RI — c’est une autre façon de voir que l’appareil est connecté et prêt à recevoir des données.