Я использую webiopi, и в основном я хочу, чтобы при загрузке веб-страницы простаивал цикл простоя, который преследует некоторые светодиоды. Затем, когда кто-то нажимает кнопку на веб-сайте, он останавливает цикл ожидания.Выход из непрерывного цикла в python с помощью webiopi
Вот что я до сих пор:
import webiopi
import time
GPIO = webiopi.GPIO
LIGHT1 = 2
LIGHT2 = 3
LIGHT3 = 4
def setup():
GPIO.setFunction(LIGHT1, GPIO.OUT)
GPIO.setFunction(LIGHT2, GPIO.OUT)
GPIO.setFunction(LIGHT3, GPIO.OUT)
a=0
def loop():
webiopi.sleep(1)
@webiopi.macro
def stopLoop():
print("Stopping Loop");
global a
a = 1
return a
@webiopi.macro
def idleLoop():
print("Entering idleLoop");
while (a==0):
GPIO.digitalWrite(LIGHT1, GPIO.HIGH)
time.sleep(0.05)
GPIO.digitalWrite(LIGHT2, GPIO.HIGH)
GPIO.digitalWrite(LIGHT1, GPIO.LOW)
time.sleep(0.05)
GPIO.digitalWrite(LIGHT3, GPIO.HIGH)
GPIO.digitalWrite(LIGHT2, GPIO.LOW)
time.sleep(0.05)
Таким образом, я могу получить его запустить idleLoop, и у меня есть кнопка подключил, чтобы послать команду для stopLoop, и я могу видеть, что она идет через POST, однако в моем окне отладки на PI я просто вижу, что он вводит idleLoop, но он никогда не входит в stopLoop. Я не уверен, что мне нужно написать прерывание или многопоточность, но мне просто нужно руководствоваться. Благодаря!
Спасибо, я знаю, что я сделал это раньше, но я вышел из практики. То, что вы показываете в качестве примера, именно то, что я должен был запомнить. Благодаря! – Photovor
Добро пожаловать. В теории вы могли бы решить эту проблему с помощью реальной многозадачности, но это немного перебор, чтобы просто мигать несколькими светодиодами. –