虽然循环不会实时更新

时间:2017-12-17 15:56:09

标签: python raspberry-pi

我使用python for raspberry pi编写了这段代码。但我正在努力解决这些问题。 while循环不会中断。

w=1
z=0

def auto_1(w,z):
    w=1
    z=0
    return w,z

def manual_1(w,z):
    w=0
    z=1
    return w,z

GPIO.add_event_detect(Manual, GPIO.RISING, callback=lambda *i: manual_1(w,z), bouncetime=300)
GPIO.add_event_detect(Auto, GPIO.RISING, callback=lambda *i: auto_1(w,z), bouncetime=300)

while w==1:
      print("Auto")
      pfr_mains_1(PFRMains,PFRGen,GenStartOut,MainsCont,GenCont)
      pfr_mains_0(PFRMains,PFRGen,GenStartOut,MainsCont,GenCont)
      time.sleep(3)
      if w==0:
         break

即使"手册" while循环也不会中断。检测到事件。代码运行正常但是在检测到事件时循环不会中断。似乎w值没有从初始值更新。但我不知道该怎么做。请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:1)

您的主要脚本正在使用全局变量w。但是,您定义的两个函数都有自己的局部变量w。这些函数对w所做的任何操作都保留在相应的函数中。

可以在两个函数中声明w为全局,以便始终访问全局w,但这不是一个好的做法。最好将函数的结果分配给全局w。