我使用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值没有从初始值更新。但我不知道该怎么做。请帮帮我。谢谢。
答案 0 :(得分:1)
您的主要脚本正在使用全局变量w。但是,您定义的两个函数都有自己的局部变量w。这些函数对w所做的任何操作都保留在相应的函数中。
你可以在两个函数中声明w为全局,以便始终访问全局w,但这不是一个好的做法。最好将函数的结果分配给全局w。