Я разрабатываю небольшое приложение на Raspberry Pi. Для этого вопроса я могу свести его к использованию поворотного энкодера. Я нашел использование dtoverlay наиболее удобным для меня способом. Следовательно, я использую модуль evdev в python3. Мой текущий код выглядит следующим образом:
import time
from threading import Thread
from evdev import InputDevice, events
import evdev
rotary_dev = InputDevice('/dev/input/event1')
def rotaryAction(dev):
for ev in dev.read_loop():
ev = evdev.util.categorize(ev)
if isinstance(ev, events.RelEvent):
if ev.event.value == 1:
print("Value: ",ev.event.value)
elif ev.event.value == -1:
print("Value: ",ev.event.value)
t = Thread(target=rotaryAction, args=(rotary_dev,))
t.start()
while True:
try:
time.sleep(5)
except KeyboardInterrupt:
print("Interrupt")
#Do something to stop the wait for device events
break
Теперь мой вопрос, как я могу завершить эту программу наилучшим образом. Я не могу остановить поток, потому что для l oop ожидает событие на устройстве. Я думал как-то подражать событию, но я не уверен (= я понятия не имею), как это сделать. Я не нашел ссылок в Интернете, интересно почему ..
Я ценю вашу помощь!