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

Python: Serial timeout not working when using 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.'

这是我在 pythondef main。我正在做的是通过 serial 从我的 Raspberry Pi 向我的 Teensy (Arduino) 发送一个字符串。 Teensy 成功启动了一个程序,并通过 serial 向树莓派发回了 1200 行代码。到目前为止这是有效的。

不起作用的是 while 循环。数据被写入文件,但循环永远继续下去,尽管传输 (Teensy->RPi) 已经停止。对于这种情况,我实现了 timeout=1,但似乎被忽略了。程序没有跳出while循环

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

超时不会影响while循环。它只会影响每次调用 read()readline() 等待的最长时间。如果你想在不再接收数据时停止循环,那么当你不再接收数据时停止循环。例如。像这样:

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