我正在使用pyserial与嵌入式设计进行通信。
ser = serial.Serial(PORT, BAUD, timeout = TOUT)
ser.write(CMD)
z = ser.readline(eol='\n')
因此我们将CMD发送到设备,它会回复一个以'\n'
如果设计无法重播,则readline()
次超时z=''
如果设备中断或崩溃,它将发送数据,然后readline()
次超时
和z将是一个末尾没有'\n'
的字符串。
除了检查z的状态之外,还有一种很好的方法可以检查readline()
是否超时。
答案 0 :(得分:5)
我想你可能想做的是......
import re
import time
import serial
def doRead(ser,term):
matcher = re.compile(term) #gives you the ability to search for anything
tic = time.time()
buff = ser.read(128)
# you can use if not ('\n' in buff) too if you don't like re
while ((time.time() - tic) < tout) and (not matcher.search(buff)):
buff += ser.read(128)
return buff
if __name__ == "__main__":
ser = serial.Serial(PORT, BAUD, timeout = TOUT)
ser.write(CMD)
print doRead(ser,term='\n')