2014-03-28 2 views
0

내 프로젝트의 일부로 하나의 xbee에서 다른 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 문도 여기에서 작동합니다.

어떻게 메시지를 완료하겠습니까?

관련 문제