好吧,我不明白这一点。我到处都看过了,但是我不明白为什么这行不通:
def main():
time = sys.argv[1]
ser = serial.Serial('/dev/ttyACM0',9600, timeout=1)
paramstr= "A 5 " + time + " 0 0 0"
ser.write(paramstr)
print 'sent'
print 'now listening...'
while True:
dbstr = ser.readline()
fo.write(str(dbstr));
fo.close()
ser.close()
print 'exiting.'
这是我def main
的python
。我正在做的是serial
从Raspberry Pi向我的Teensy(Arduino)发送一个字符串。Teensy成功启动了一个程序,并将1200行发送回了serial
树莓派。到目前为止,这是有效的。
无效的是while
循环。尽管已停止传输(Teensy-> RPi),但数据已写入文件,但循环将永远继续。对于这种情况,我实现了timeout=1
,但似乎被忽略了。该程序不会退出while循环。
有人可以帮忙吗?提前致谢!
超时不会影响while循环。它只会影响每个呼叫read()
或readline()
等待的最长时间。如果要在不再接收数据时停止循环,请在不再接收数据时停止循环。例如这样的事情:
while True:
dbstr = ser.readline()
fo.write(str(dbstr));
if not dbstr:
break
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句