我正在使用Serial.write将命令发送到工作中的设备(工作正常)。
成功将数据发送到外部设备后,我收到一个8-byte
响应,我正在尝试在python上读取该响应。我知道8字节应该是什么样子,因为我在oscilloscope
和serial 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字节,以十六进制表示)>
但是这里是OUTPUT:
b'\x00\x00\x00\xf8\n\x04\x07\r'
如果再次运行该程序。 输出:
b'\x00\x00\x00\xf8\n\x94\x96\r'
每次运行程序时,最后4个字节(应该是什么)我都会得到不同的垃圾。
前4个字节正确(x00\x00\x00\xf8
)。其余为与我的范围或终端数据不匹配的垃圾。
我试图在线搜索我的问题,但是我需要一些指导。
我正在使用Serial.write将命令发送到工作中的设备(工作正常)。成功将数据发送到外部设备后,我收到一个8字节的响应,试图读取...
我认为您可能需要查看设备的协议。