2014-03-28 52 views
0

作爲我的項目的一部分,我通過一個xbee向另一個發送字節。我有Python代碼可以正常工作,除了一件事。如何在Pyserial Xbee通信期間從while循環退出?

在接下來的接收器代碼中,我必須在成功接收到所有內容後再添加一些語句。問題是,因爲存在真正的條件(用於連續接收數據包),所以在代碼之後添加的任何語句都將無限運行。是否有任何解決方案來檢查「如果所有數據包都已成功接收」,退出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  

回答

0

我不知道如何檢查是否收到的所有消息部分,但你可以使用break跳出循環。

0

而不是

while True: 

在循環的頂部,你可以開始:

message_complete = False 
while not message_complete: 

,並在循環中有一條線,如:

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

(如果換行符是消息的結尾)

當然,break語句也適用於這裏。

你如何確定信息完整?