PiFace 보드가 제 라즈베리 파이에 쌓여 있고 버튼 3을 누르면 파이썬 프로그램을 종료하고 싶습니다. 따라서이 버튼에 인터럽트 수신기를 연결하고 loop.stop) 콜백하지만 내 루프가 중지되지 않습니다. 마치 내 명령이 무시되는 것과 같습니다.PiFace & asyncio : 루프가 멈추지 않습니다
내 코드 :
#!/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 필요, 그것은 바로 차단 missused 것 없기 때문에 당신이 실행 약간의 코 루틴을 가지고 몇 가지 작업을 할 생각
당신이 asyncio가 라즈베리 파이에서 실행하도록되어 확신? (어쩌면 그것은 이유 때문에 라스베리 - 파이가 아니다 : D) –
@ vlad-ardelean 나는 그렇게 생각한다. 왜 안돼? 그 동안 나는'Barrier' 객체로 해결 방법을 시도 할 것입니다. – Reinbert