Gnu-Screen
串列設備輸出在 gnu 螢幕中看起來不錯,但使用 cat 時出現亂碼
我有一個串列設備(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
原來 ^X 字元是 0x18 的字節,在這個協議中是一種未記錄的 NaN。有多個熱電偶埠,如果你只插入一個熱電偶,你會得到一條帶有溫度值的線,然後是一堆以 ^X 結尾的線。
出於某種原因,我的終端中的 cat 將這些字元顯示為框,但 screen 根本不顯示它們。