while循环在1次迭代后停止

时间:2017-05-23 22:50:20

标签: multithreading python-2.7 while-loop bluetooth raspberry-pi

作为我尝试学习python的第一个项目之一,我决定制作一辆遥控车。但是现在我长期以来一直困在同样的2个问题上,并且无法找到真正的好答案。在我的代码中,我通过手机上的蓝牙连接到我的覆盆子。当我发送简单的命令时,护理会移动。但我还添加了3个传感器,因此我可以构建某种自动驾驶仪,在这里,汽车可以躲避路径中的物体 我的代码:https://pastebin.com/ggUFcrpT

def serialread():
 while True:
   line = ser.read()

   print line

   if line == 's':
      ser.write("Abandom ship! \n")
      resetmotorpins()
   elif line == 'f':
      ser.write("Going forward, captain! \n")
      resetmotorpins()
      forward()
   elif line == 'r':
      ser.write("Dizzy! \r\n")
      resetmotorpins()
      right()
   elif line == 'l':
      ser.write("If nothing goes right, go left! \n")
      resetmotorpins()
      left()
   elif line == 'b':
      ser.write("nah fam, i'm out, f*ck this shiet. \r\n")
      resetmotorpins()
      reverse()
   elif line == "t":
       ser.write("autoPilot activate \n")
       auto = 1
       resetmotorpins()
       while auto == 1:
        line = ser.read()    
        if line == "y":
            ser.write("autoPilot deactivated \n")
            resetmotorpins()
            auto = 0
        else:
            meet()

   elif line == "m":
      meet()
   elif line == 'o':
      servomotorright()
   elif line == 'x':
      servomotorleft()
   elif line == 'q':
      waardesVragen()

我认为它停留在line = ser.read()并且需要一行来运行代码。但我不知道如何让它不断循环,并在发送信件/命令时进行一些中断。

最重要的是,我尝试初始化多线程,这样我就可以不断地从3传感器打印我的值,并在接近击中对象时进行中断。但是多线程似乎不起作用,一旦我进入传感器值打印,它就永远不会离开那个循环并且不再听我的蓝牙连接。 有什么建议?我希望我发布这个权利,这是我的第一个问题。 我在覆盆子pi B上使用python 2.7.5

0 个答案:

没有答案