Python:使用readline时,串行超时不起作用

马库斯

好吧,我不明白这一点。我到处都看过了,但是我不明白为什么这行不通:

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 mainpython我正在做的是serial从Raspberry Pi向我的Teensy(Arduino)发送一个字符串Teensy成功启动了一个程序,并将1200行发送回了serial树莓派。到目前为止,这是有效的。

无效的是while循环。尽管已停止传输(Teensy-> RPi),但数据已写入文件,但循环将永远继续。对于这种情况,我实现了timeout=1,但似乎被忽略了。该程序不会退出while循环。

有人可以帮忙吗?提前致谢!

帕特里克·莫平(Patrick Maupin)

超时不会影响while循环。它只会影响每个呼叫read()readline()等待的最长时间如果要在不再接收数据时停止循环,请在不再接收数据时停止循环。例如这样的事情:

while True:
    dbstr = ser.readline()
    fo.write(str(dbstr));
    if not dbstr:
        break

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章