2014-09-24 3 views
0

이 코드를 실행하면 프로그램이 무작위로 중지됩니다. 오류가 발생하지 않고 멈추지도 않습니다. 플래그 3을 사용할 수 없습니다. 플래그가없는 모터 컨트롤과 동일한 문제가 테스트되었습니다. 왜 당신이 이제까지 종료 기대 - 그리고 그것은 단지,python 무한 루프가 예기치 않게 끝납니다

import time 
import display 
import servo 
import moter 
import pic 
import button 


import RPi.GPIO as GPIO 


def main(): 
    GPIO.cleanup() 
    moter.init() 
    servo.init() 
    display.init() 
    pic.init() 
    moter.start() 
    #servo.start() 
    try: 
     while True: 
      d = pic.mesure() 
      print "Flag1" 
      while d > 100: 
       moter.start() 
       moter.forward(90) 
       d = pic.mesure() 
       print d 
      moter.stop_drive() 
      print "Flag2" 
     print "Flag3" 
    except KeyboardInterrupt: 
     GPIO.cleanup() 
     pass 
    GPIO.cleanup() 

if __name__ == '__main__': 
    #debug("----------========== Starting session! ==========----------") 
    main() 

답변

0

당신은 while True: 루프의 모든 break이없는 제발 도와주세요 밖으로 종료?

0

이되지 않습니다. flag3이됩니다. 이제까지!

외부 루프를 영원히 실행하거나 pic 또는 moter (호출) 중 하나에서 멈추거나 예외를 발생시키고 종료합니다.

프로그램의 출력은 실제 발생하고있는 사건을 파악하는 데 매우 중요합니다.

예를 들어, flag1이 보이십니까? flag2는 어떨까요? 또는 d 값이 모두 있습니까?

예외 영역에 try 블록을 넣고 인 지 확인하십시오. 당신이 print 문을 디버깅하는 동안 라인의 각 한 쌍을 사용할 수없는 경우

+0

내가 그 (것)들을 논평 했었기 때문에 나는 그 서브 루틴을 생각하지 않으며 아직도 동일한 문제점을 가지고 있었다, –

+0

그리고 LOL 아픈 약간 더 많은 것에서 추가하십시오 인쇄 지금까지 나는 깃발 1와 2를 얻는다 그러나 병은 감사한다 –

0

:-) 심각하게 고려하지 않을

내가 던져지는 예외가 있다고 생각한다. 예외를 인쇄하여 문제가있는 곳을 확인하거나 try 블록을 제거하고 오류가 발생한 행을 확인하십시오.

0

나는 프로그램이 멈추지 않는다고 생각하지만 그 후에는 아무 것도 할 수 없다. while 문을 시작하면 코드를 실행 한 다음 중지하라는 메시지가 표시되지 않으므로 명령문의 맨 위부터 시작하지만 시작하기 위해 수행 할 작업이 없습니다. 시도해 볼 수 있습니다 :

while True: 
    d = pic.mesure() 
    print "Flag1" 
    while d > 100: 
     moter.start() 
     moter.forward(90) 
     d = pic.mesure() 
     print d 
    moter.stop_drive() 
    print "Flag2" 
    break 
print "Flag3" 

이렇게하면 루프가 멈추고 프로그램이 계속됩니다.

관련 문제