【发布时间】:2019-07-18 13:48:11
【问题描述】:
我正在我的 RPi 上使用 Python,现在我需要帮助。问题是在我的程序的后台,一个线程正在做他的工作。这项工作是一个有定义的状态事件程序。但是我需要在 else 中杀死这个线程 t。我认为它可以与 stop、clear 或类似的东西一起使用,但它不起作用。如果您需要完整的代码,只需编写它。这是我的代码中唯一不起作用的东西。
RPi 与一块板连接,该板包括 3 个按钮和 6 个 LED。每个 LED 都是一个状态。如果按钮按下正确(例如和),状态将切换。我的板子在没有 RPi 的情况下工作,然后它只是一个硬件解决方案。但是对于演示文稿,在软件中也必须做到这一点。这正是问题所在。如果我从硬件切换到软件,则线程将处于活动状态,如果我从软件切换回硬件,则线程仍处于状态。再次切换到软件,线程重新启动。但是旧状态(LED)没有被删除。所以看起来有 2 个状态处于活动状态。
我只想从硬件切换到软件,然后再切换回来,没有任何问题。您看到的代码是这个开关作为 GUI
def GUI_Function():
def HW_SW_Mode():
t = threading.Thread(target=Main_Function)
t.daemon = True
if not Led_HW_SW_Mode.is_lit:
Led_HW_SW_Mode.on()
ledButton2["text"] = "Software aktiv"
t.start()
else:
t._stop()
RPi.GPIO.output(Led_List, RPi.GPIO.LOW)
Led_HW_SW_Mode.off()
ledButton2["text"] = "Hardware aktiv"
def close():
RPi.GPIO.cleanup()
win.destroy()
- 主程序工作
- GPIO 有效
- 从硬件切换到软件效果不佳
【问题讨论】:
标签: python multithreading raspberry-pi kill