我试图用一个按钮在树莓派上启动代码,一旦按下另一个按钮,我希望代码停止正在做的事情并转移到另一个功能。
当我试图立即打破这个循环时,我整天都在摸不着头脑:
# Import RPi GPIO module
from gpiozero import Button
#Assign name to buttons GPIO pins
button1 = Button(2)
button2 = Button(4)
def f1():
while True:
if button2.is_pressed:
break
input = float(input('Select grade: '))
if input < 10:
print('Less than 10')
def f2():
while True:
if button1.is_pressed:
break
input= float(input('Select grade: '))
if input < 10:
print('Less than 10')
while True:
if button1.is_pressed:
f1()
elif button2.is_pressed:
f2()
如果我将其设置input
为:
serial = serial.Serial("/dev/ttyACM1",115200)
serial_value = serial.readline().decode('utf8').rstrip()
scale_input = float(serial_value)
input = scale_input
在这input
两种情况下都可以正常工作并且代码运行良好,尽管它只会在我按住按钮直到serial
或input()
得到它们的值时才会中断,不幸的是这是不正确的,我需要杀死例如立即c1()
切换到的函数,c2()
无论是否代码是否已收到输入。
我试图玩一些线程,input
在一个单独的函数上运行代码的“”部分并调用它,threading
但是代码变得很糟糕。
我有一种感觉,线程是要走的路,但我不知道如何处理它,显然代码被卡在了input
并且代码不会移动,直到收到一个值才不会使代码达到break
之前input
收到。