У меня есть 2 кнопки, подключенные к Rapsberry Pi Zero W на 38 и 40 контактах.У меня запущен длительный процесс на контакте 38, и я хотел бы прервать его после нажатия на контакт 40.Но контакт 40 неактивен, пока выполняется обратный вызов контакта 38.Как остановить длительный процесс с помощью другого события?
import RPi.GPIO as GPIO
import time
should_stop = False
def cb1(pin):
if GPIO.input(pin) == 0:
print("long running:", pin)
global should_stop
should_stop = False
for _ in range(10):
if not should_stop:
print("long running is running")
time.sleep(1)
print("long running DONE")
def interrupt(pin):
if GPIO.input(pin) == 0:
print("fast running:", pin)
global should_stop
should_stop = True
GPIO.setmode(GPIO.BOARD)
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(38, GPIO.RISING, callback=cb1, bouncetime=300)
GPIO.add_event_detect(40, GPIO.RISING, callback=interrupt, bouncetime=300)
while True:
time.sleep(1)