2

好吧,我不明白。我现在到处都看了,但我不明白为什么这不起作用:

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 行发送回 raspberry serial。到目前为止,这是有效的。

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

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

4

1 回答 1

3

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

while True:
    dbstr = ser.readline()
    fo.write(str(dbstr));
    if not dbstr:
        break
于 2015-09-20T06:18:29.400 回答