【发布时间】:2021-09-24 15:37:40
【问题描述】:
我正在使用 pySerial 通过 USB 与微控制器通信,大部分通信由桌面 python 脚本发起,该脚本发送命令包并等待回复。
但也有可能由微控制器发送的警报数据包,无需来自 python 脚本的命令。在这种情况下,我需要监视读取流中的任何警报。
为了处理警报,我专门使用一个单独的进程来调用readline() 并循环它,如下所示:
def serialMonitor(self):
while not self.stopMonitor:
self.lock.acquire()
message = self.stream.readline()
self.lock.release()
self.callback(message)
在一个类中。然后该函数在一个单独的过程中由
启动self.monitor = multiprocessing.Process(target = SerialManager.serialMonitor, args = [self])
每当发送命令包时,命令函数需要收回对流的控制,为此它必须中断处于阻塞状态的readline() 调用。如何中断readline() 通话?有什么方法可以安全地终止进程吗?
【问题讨论】:
标签: python python-multiprocessing pyserial