4

我正在 Raspberry Pi 上开发一个小型应用程序。对于这个问题,我可以归结为旋转编码器的使用。我发现使用 dtoverlay 对我来说是最方便的方式。因此,我在 python3 中使用了 evdev 模块。我当前的代码如下所示:

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

现在我的问题是,我怎样才能以最好的方式终止这个程序。我无法停止线程,因为 for 循环等待设备上的事件。我想以某种方式模拟一个事件,但我不确定(=我不知道)如何做到这一点。我在网上没有找到任何参考资料,我想知道为什么..

我感谢您的帮助!

4

0 回答 0