2011-09-01 112 views
4

我在使用pySerial的Windows和Linux下都遇到串行IO问题。这段代码的设备永远不会接收命令和读超时:pySerial缓冲区不会冲洗

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()的调用,但不会将串行对象作为参数。

感谢, 罗伯特

回答

7

把一些延迟写入之间和读 例如

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()