在使用pySerial的Windows和Linux下,串行IO出现问题。使用此代码,设备将永远不会收到命令,并且读取超时:

import serial
ser = serial.Serial('/dev/ttyUSB0',9600,timeout=5)
ser.write("get")
ser.flush()
print ser.read()


这段代码第一次超时,但是随后的迭代成功了:

import serial
ser = serial.Serial('/dev/ttyUSB0',9600,timeout=5)
while True:
    ser.write("get")
    ser.flush()
    print ser.read()


谁能告诉我发生了什么事?我试图添加对sync()的调用,但它不会将串行对象作为参数。

谢谢,
罗伯特

最佳答案

在写入和读取之间放置一些延迟
例如

import serial
ser = serial.Serial('/dev/ttyUSB0',9600,timeout=5)
ser.flushInput()
ser.flushOutput()
ser.write("get")

# sleep(1) for 100 millisecond delay
# 100ms dely
sleep(.1)
print ser.read()

08-26 17:38
查看更多