J'essaie d'établir une communication de bas niveau avec une imprimante thermique Epson tm-t88iv via Shell, mais je n'arrive pas à le comprendre. Je travaille sur ubuntu 13.10 64 bits avec un Dell Vostro 1510.
Je l'ai connecté via un câble prolifique pl2303 série-usb. lsusb montre:
ben@ben-Vostro1510:~$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0c45:63e0 Microdia Sonix Integrated Webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
dmesg | grep tty montre:
ben@ben-Vostro1510:~$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 1.488664] tty tty28: hash matches
[ 225.882444] cdc_acm 2-4:1.0: ttyACM0: USB ACM device
[ 1478.741395] usb 5-1: pl2303 converter now attached to ttyUSB0
[ 3672.537405] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[ 3679.219805] usb 5-1: pl2303 converter now attached to ttyUSB0
[ 4657.704772] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[ 4699.905633] usb 5-1: pl2303 converter now attached to ttyUSB0
[ 4798.952739] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[ 9930.266470] usb 5-1: pl2303 converter now attached to ttyUSB0
J'ai essayé d'utiliser cutecom pour lui envoyer un code hexadécimal spécifique, mais je ne reçois aucune réponse. J'ai également essayé de faire écho à/dev/ttyUSB0 mais je ne sais pas où lire la réponse. J'ai aussi essayé "Sudo cat/dev/ttyUSB0" mais je ne reçois rien.
aidez-moi s'il vous plaît à résoudre ceci! Merci!
Solution:
Je devais courir
Sudo chmod 777 /dev/ttyUSB0
puis lancez jpnevulator en tant que root
Sudo jpnevulator --tty /dev/ttyUSB0 --read
puis en utilisant un autre en écriture, j’ai écrit la séquence de vérification de l’état 02 AC 00 01 1C 00 00 03 30 30 43 45
et a obtenu la réponse de l'imprimante à l'écran. J'ai maintenant un problème différent avec la somme de contrôle, mais c'est pour le prochain épisode de mon Odyssey dans la programmation de bas niveau.
Je n'ai aucune idée des imprimantes thermiques, mais c'est comme cela que j'avais l'habitude de tester Arduino ou un modem de téléphone portable.
Par exemple, avec un téléphone Android comme modem:
Lecture du port série (doit être root):
Sudo su
cat /dev/ttyACM0
Comme vous pouvez lire quelques lignes au besoin:
head -n2 /dev/ttyACM0
Écrire en série, ouvrir un autre onglet de terminal ou une fenêtre:
Sudo su
echo -e "AT" > /dev/ttyACM0
Il affiche OK
sur la fenêtre de lecture du port. Vous pouvez également envoyer des données hexadécimales (utilisez l'option -n pour éviter d'envoyer une nouvelle ligne à la fin).
echo -e -n "\x41\x54\x0a" > /dev/ttyACM0
pareil que:
echo -e "\x41\x54" > /dev/ttyACM0
Shell affichera l'hex non affiché sous forme de petit carré avec sa valeur écrite à l'intérieur. Essaye ça.
echo -e "\x13"