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.'
这是我在 python
的 def 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
好的,我不明白。我现在到处都看了,但我不明白为什么这不起作用:
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.'
这是我在 python
的 def 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