我正在尝试通过 shell 与 Epson tm-t88iv 热敏打印机建立低级通信,但我搞不懂。我正在使用戴尔 vostro 1510 运行 ubuntu 13.10 64 位。
我通过一条多产的串行 USB pl2303 电缆将其连接起来。lsusb 显示:
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 显示:
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
我尝试使用 cutecom 向它发送特定的十六进制代码,但没有得到任何答复。我还尝试回显到 /dev/ttyUSB0,但我不知道从哪里读取响应。我还尝试了“sudo cat /dev/ttyUSB0”,但什么也没得到。
请帮我解决这个问题!谢谢!
解决方案:
我不得不跑
sudo chmod 777 /dev/ttyUSB0
然后以 root 身份运行 jpnevulator
sudo jpnevulator --tty /dev/ttyUSB0 --read
然后使用另一个写入模式,我写入了状态检查序列 02 AC 00 01 1C 00 00 03 30 30 43 45
并在屏幕上得到了打印机的响应。我现在遇到了与校验和不同的问题,但这是我进入低级编程的下一阶段要讨论的问题。
答案1
我对热敏打印机一无所知,但这是我用来测试 Arduino 或手机调制解调器的方式。
以 Android 手机作为调制解调器为例:
读取串口(需要root权限):
sudo su cat /dev/ttyACM0
您可以根据需要只阅读几行:
head -n2 /dev/ttyACM0
写入串行,打开其他终端选项卡或窗口:
sudo su echo -e "AT" > /dev/ttyACM0
它显示
OK
在读取端口窗口上,您也可以发送十六进制数据(使用 -n 选项以避免在末尾发送新行)echo -e -n "\x41\x54\x0a" > /dev/ttyACM0
与...一样:
echo -e "\x41\x54" > /dev/ttyACM0
Shell 会将未显示的十六进制显示为小方块,其中写有其值。试试这个。
echo -e "\x13"