Gnu-Screen

串列設備輸出在 gnu 螢幕中看起來不錯,但使用 cat 時出現亂碼

  • December 16, 2017

我有一個串列設備(Omega RDXL4SD 熱電偶閱讀器,此處為通訊詳情第 22 頁)通過 FTDI 電纜連接到執行 Raspbian 的 Raspberry Pi 上的 USB 埠。它出現在 /dev/ttyUSB0 並且如果我通過呼叫顯示它,輸出看起來很完美

pi@raspberrypi:~ $ screen /dev/ttyUSB0 9600

輸出是幾個數字。每次吐出一行時,游標就會回到行首並覆蓋它,這樣螢幕上一次只有一行數字。

現在,我想使用cat,而不是screen達到相同的效果,但是當我這樣做時,我會得到帶有問號的框:

pi@raspberrypi:~ $ cat /dev/ttyUSB0
4401010000

我認為這是某種編碼問題。您能否解釋一下這些字元在screenvs中的解釋方式可能有什麼不同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 根本不顯示它們。

引用自:https://unix.stackexchange.com/questions/410932