从网络侦听器线程中断主Python线程

问题描述 投票:0回答:1
  • 我需要从Python中的另一个线程中断主线程。

  • 期望的行为是在 主线程的执行。

详情:

主线程使用队列(语音、电机控制、视觉动画)通过各种线程编排动画机器人。

通信线程通过USB监听Arduino(监听运动确认)。 Arduino 被编程为通过 USB 连接发送消息来处理按钮按下硬件中断。

我需要能够在通信线程上收到硬件中断消息后立即中断主线程的动画例程,实质上是将硬件中断转换为软件级别。

完美的行为是在主线程上触发异常之一,在机器人造成任何伤害之前将其停止。

我尝试了许多“最佳实践”方法,例如事件处理,但这留下了一个危险的时期,机器人在处理硬件中断事件之前完成当前的运动。我也考虑过信号,尽管使用它们进行线程通信并不理想。

有什么建议吗?

python multithreading arduino interrupt robotics
1个回答
0
投票
对于那些后来可能发现这一点的人,我通过将主线程从所有需要很长时间才能完成的操作(任何文本到语音、动画)中释放出来来避免这个问题。这样,主线程会发出命令,等待其完成,并在等待期间读取 USB 消息。如果收到硬件中断消息,它会杀死所有线程并进入紧急停止模式。

© www.soinside.com 2019 - 2024. All rights reserved.