我有一个串行设备(Omega RDXL4SD 热电偶读取器,通讯详细信息第 22 页这里)通过 FTDI 电缆连接到运行 Raspbian 的 Raspberry Pi 上的 USB 端口。它出现在 /dev/ttyUSB0 处,如果我通过调用显示它,输出看起来很完美
pi@raspberrypi:~ $ screen /dev/ttyUSB0 9600
输出是几个数字。每次它吐出一行时,光标都会返回到该行的开头并覆盖它,因此屏幕上一次只有一行数字。
现在,我想使用cat
, 不是screen
为了达到相同的效果,但是当我这样做时,我会得到带有问号的框:
pi@raspberrypi:~ $ cat /dev/ttyUSB0
4401010000
我认为这是某种编码问题。您能否解释一下screen
vs中这些字符的解释方式可能有所不同cat
,或者建议其他故障排除步骤?
如果有帮助:
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l
GNU/Linux
pi@raspberrypi:~ $ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 100; time = 2;
-icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo
编辑:@meuh 建议添加 -vet 以显示特殊字符。现在我了解了这些标志,我的特定问题就得到了有效解决!不过,我仍然不介意解释一下这里到底发生了什么。
pi@raspberrypi:~ $ cat -vet /dev/ttyUSB0
^M^B4201010000^X^X^X^X^M^B4301010000^X^X^X^X^M^B4401010000^X^X^X^X^M^B41010100000245^M^B4201010000^X^X^X^X^M^B4301010000^X^X^X^X^M^B4401010000^X^X^X^X^M^B41010100000245^M^B4201010000^X^X^X^X^M^B4301010000^X^X^X^X^M^B4401010000^X^X^X^X^M^B41010100000245^M^B4201010000
答案1
结果 ^X 字符(即 0x18 的字节)是该协议中一种未记录的 NaN。有多个热电偶端口,如果您只插入一个热电偶,您会得到一条带有温度值的行,然后是一堆以 ^X 结尾的行。
由于某种原因,我的终端中的 cat 将这些字符显示为框,但屏幕根本不显示它们。