我正在使用Serial.write向工作中的设备发送命令(工作正常)。
在我成功地将数据发送到外部设备后,我收到了一个8-byte我试图在 python 上读取的响应。我知道 8 字节应该是什么样子,因为我使用的是oscilloscopeinserial protocol mode和realTerminal.
我的 python 程序读取的前四个字节是正确的,但后来我得到了垃圾。ser.read我使用什么命令并不重要。
这是代码和输出:
import serial
import time
ser = serial.Serial(port='COM10',baudrate=38400,timeout=1)
wakeupSAA232 = b'\x0D'
ser.write(wakeupSAA232)
time.sleep(0.5)
sendData = bytearray([170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 0, 0])
ser.write(sendData)
#s = ser.read_until('\r')
s = ser.read(8)
print(s)
我知道我应该阅读:
00 00 00 F8 0A 14 16 0D (8 个字节),十六进制
但这里是输出:
b'\x00\x00\x00\xf8\n\x04\x07\r'
如果我再次运行该程序。输出:
b'\x00\x00\x00\xf8\n\x94\x96\r'
每次程序运行时,最后 4 个字节(应该是什么)都会得到不同的垃圾。
前 4 个字节是正确的 (the x00\x00\x00\xf8)。其余的是与我的范围或终端数据不匹配的垃圾。
我试图在网上搜索我的问题,但我需要一些指导。

