У меня есть панель PiFace, уложенная на мой малиновый Pi, и я хочу выйти из моей программы python, когда я нажимаю кнопку 3. Поэтому я подключаю прослушиватель прерываний к этой кнопке и вызываю loop.stop () в обратном вызове, но мой цикл не остановится. Это как если бы мои команды игнорировались.PiFace & asyncio: loop не останавливается
Мой код:
#!/usr/bin/python3
import pifacedigitalio as piface
import asyncio
import time
QUIT_DETECT = 3
loop = asyncio.get_event_loop()
counter = 0
def onQuit(event):
# Doesn't stop
global loop
loop.stop()
print(loop)
# Does change
global counter
counter += 1
print(counter)
piface.init()
listener = piface.InputEventListener()
listener.register(QUIT_DETECT, piface.IODIR_FALLING_EDGE, onQuit)
listener.activate()
loop.run_forever()
loop.close()
listener.deactivate()
piface.deinit()
Выход:
<_UnixSelectorEventLoop running=True closed=False debug=False>
1
<_UnixSelectorEventLoop running=True closed=False debug=False>
2
<_UnixSelectorEventLoop running=True closed=False debug=False>
3
<_UnixSelectorEventLoop running=True closed=False debug=False>
4
Так counter
увеличиваются при каждом нажатии, но loop
просто не будет принимать мой стоп вызов. Может ли кто-нибудь сказать мне, как остановить цикл? Заранее спасибо
вы уверены, что asyncio предполагается запустить на малиновой-пи? (может быть, это не малина-ро по причине: D) –
@ vlad-ardelean Я полагаю, что так. Почему нет? Тем временем я попробую обходной путь с объектом «Барьер». – Reinbert