如何在Pyserial Xbee通信期间退出while循环?

时间:2014-03-28 09:06:23

标签: python pyserial

作为我项目的一部分,我将一个xbee上的字节发送到另一个xbee。我有Python代码工作正常,除了一件事。

在以下接收器代码中,我必须在成功收到所有内容后添加更多语句。问题是,由于存在真实条件(用于连续接收数据包),我在代码之后添加的任何语句都将无限运行。是否有任何解决方案来检查“如果所有数据包都已成功接收”,退出while循环并执行其他声明。

导入序列号

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 :(得分:0)

我不知道如何检查是否收到了所有邮件部分,但您可以使用break来摆脱循环。

答案 1 :(得分:0)

而不是

while True:

在循环的顶部,您可以从:

开始
message_complete = False
while not message_complete:

并且在循环中有一行,例如:

if val[-1:] == '\n': 
    message_complete = True

(如果换行符是邮件的结尾)

当然,break语句也适用于此。

您如何确定邮件已完成?