如何在Pyserial Xbee通信中退出while循环?
在我的项目中,我需要通过一个xbee模块把字节数据发送到另一个xbee。我有一段Python代码运行得很好,但有一个问题。
在下面的接收代码中,我需要在所有数据成功接收后添加一些额外的语句。问题是,由于有一个一直循环的条件(用于持续接收数据包),我添加的任何语句都会无限执行。有没有什么办法可以检查“是否所有数据包都已成功接收”,然后退出这个循环,执行其他语句呢?
import serial
ser = serial.Serial(port='COM28', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=0)
c=0
data=[]
msgparts=[]
while True:
if ser.inWaiting():
val = ser.readline(ser.inWaiting())
print val
print(val)
fn1="image%s" %c
c=c+1
f = open(fn1, 'wb')
f.write(val)
print fn1
f.close()
msgparts.append(val)
#### Here I want to add new statements
2 个回答
0
不要在循环的开头写:
while True:
你可以从下面这个开始:
message_complete = False
while not message_complete:
然后在循环里面加一行,比如:
if val[-1:] == '\n':
message_complete = True
(如果换行符是消息的结束标志)
当然,break语句在这里也能用。
你是怎么判断消息是否完成的呢?
0
我不知道怎么检查所有的消息部分是否都收到了,不过你可以用 break
来跳出循环。