使用Python / Pyserial与RS232串行端口通信时丢失数据响应

时间:2016-12-09 22:25:26

标签: python encode pyserial

我使用python和pyserial尝试发送命令并获取响应。这是我的示例代码:

import serial           
ComPort = serial.Serial('COM4') # open COM4
ComPort.baudrate = 115200
ComPort.bytesize = 8
ComPort.parity   = 'N'
ComPort.stopbits = 1
ComPort.timeout  = 1
a= "FE0652"
data = a.decode('hex')
No = ComPort.write(serial.to_bytes(data))
msg = ComPort.read(1024)
print (msg.encode('hex'))

我使用了C编写的另一个工具,它正确且完整地显示了输出。但是使用Python,它几乎失去了一半的响应。例如:

预期:

ff5206
ff0023
ff0002
ff8080
ff8080
ff8080
ff8080
ff8003
......

观察到的:

ff5206
ff0023
ff8080
ff8080
ff8003
......

1 个答案:

答案 0 :(得分:0)

在写入和读取之间添加一些延迟:

time.sleep(0.01)

另外,尝试按字节读取:

s=''
while ComPort.inWaiting() > 0:
    s += ComPort.read(1)