通过串口进行Python监控

3 投票
2 回答
7497 浏览
提问于 2025-04-15 11:50

下午好,

我想请教一下,监控串口事件的最佳方法是什么。

我正在使用PySerial通过串口向一些设备发送“命令”,

我希望能收到这些设备的状态反馈。

哪种方法最好呢:1) 填充一个管道然后读取,2) 开一个新的线程专门用来读取,还是其他什么方法?

我能否请求一个简单的代码来实现这个解决方案?

2 个回答

1

选择的策略是使用Python的多进程和队列。你可以参考以下链接:

  1. http://www.ibm.com/developerworks/aix/library/au-threadingpython/index.html,了解线程的相关内容。

  2. http://www.ibm.com/developerworks/aix/library/au-multiprocessing/index.html?ca=dgr-lnxw9dPython-Multi&S_TACT=105AGX59&S_CMP=grsitelnxw9d,了解多进程的相关内容。

供参考。

3

关于使用pyserial的一些基本建议,可以看看S.Lott在评论中提到的搜索内容。

至于如何实现你的应用程序,最好的策略其实取决于你的设备协议是怎么定义的。设备是会立即对查询做出回应吗?还是它们会不断发送数据,需要你去监控?这个定义很重要,因为它会直接影响你处理通信的方式。

一般来说,我发现用一个单独的线程来读取串口中的所有数据,然后把这些数据放进一个Queue里,这样做既简单又稳定。然后,主应用程序逻辑可以在需要的时候查询这个队列,读取数据。

撰写回答