我正在嘗試通過(guò) USB/串行端口 [ttyACM*/COM*] 讀取協(xié)議。當(dāng)設(shè)備返回響應(yīng)時(shí),我應(yīng)該收到具有以下模式的幀:| FF | 15 | 15 44 | 44 7D | 00 | 00 88 | 88 00 | 00 0D | 00 | 00 00 | 00 86 | 86 00 | 00 76 | 76 00 | 00 00 | 00 00 | 00 00 | 00 40| 00 | 00 A7| 有限元| (21 十六進(jìn)制)我必須使用的配置如下:波特率:2400數(shù)據(jù)位:8奇偶校驗(yàn):無(wú)停止位:1握手:無(wú)現(xiàn)在,當(dāng)我嘗試在 Linux 上使用 CuteCom 或在 Windows 上使用 HTerm 來(lái)閱讀此內(nèi)容時(shí),一切正常,并且當(dāng)我將其顯示為十六進(jìn)制時(shí),我得到的框架正是我需要的。H術(shù)語(yǔ):幀響應(yīng):FF 15 44 7C 00 88 00 00 7B 00 7C 00 73 00 1F 00 00 40 00 26 FE(21 十六進(jìn)制)可愛(ài)通訊:幀響應(yīng):ff 15 44 00 00 78 00 00 00 00 01 00 79 00 18 00 00 8d 00 f0 fe(21 十六進(jìn)制)現(xiàn)在為什么當(dāng)我嘗試使用 picocom 讀取序列時(shí),我無(wú)法獲取我需要的數(shù)據(jù)?皮科com:picocom -b 2400 -r -l --omap crcrlf --imap 8bithex -fn /dev/ttyACM0幀響應(yīng):ff D 82 88 81 82 y@> fe(6 十六進(jìn)制?)畫(huà)面中間的奇怪人物是怎么回事?但更重要的是,當(dāng)嘗試在 python 中接收幀時(shí)(我將使用它來(lái)解析包),我也無(wú)法獲得與 Cutecom/hterm 相同格式的幀:Python [代碼]:ser = serial.Serial("/dev/ttyACM0",2400,timeout=0.3, bytesize=8, parity='N',rtscts=0)ser.close()ser.open()ser.flush()ser.write(b'\xff\x09\x53\x83\x00\x00\x00\xdf\xfe')while True: s = ser.read_until(b'\xfe') ser.flush() print(s) time.sleep(3.0)Python:
2 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
事實(shí)證明,Python 只是方便地將十六進(jìn)制字符更改為 ASCII。但該值保持不變,因此框架可以正常使用。而 picocom 會(huì)忽略空字符。

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
Picocom 手冊(cè)頁(yè)有點(diǎn)令人困惑。--imap 8bithex
僅映射到十六進(jìn)制字符 128-255,而不是全部
你應(yīng)該使用這個(gè):picocom --imap spchex,tabhex,crhex,lfhex,8bithex,nrmhex
這會(huì)將所有可能的字符映射到十六進(jìn)制轉(zhuǎn)錄。
添加回答
舉報(bào)
0/150
提交
取消