当运行这个代码程序将随机停止,它没有给出错误它只是停止它也永远不会到达flag3,我测试这只有标志没有电机控制相同的问题,我可以重载somthing,它只是退出,请帮助
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 :(得分:0)
你在break
循环中没有任何while True:
- 你为什么期望它永远结束?
答案 1 :(得分:0)
它赢了到flag3
。永远!
它将永远运行外部循环,陷入pic
或moter
(原文如此)调用之一,或引发异常并退出。
该程序的输出在确定哪些案例实际发生时非常宝贵。
例如,您看到flag1
了吗?那么flag2
呢?或者所有d
值?
将print
放在例外区域和try
块之后,看看是否 。
如果您在调试过程中每隔几行都没有print
语句,那么您就不会认真对待它: - )
答案 2 :(得分:0)
我怀疑抛出异常。尝试打印异常以查看问题所在或删除try块并查看它出错的行。
答案 3 :(得分: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"
这将停止循环并继续程序。