python - python中写入和监听同一个串口

标签 python serial-port pyserial

是否有办法在不出现“COM 端口正在使用”错误的情况下执行此操作?我有一个在 com 端口上监听 gps GPRMC 句子的服务。但我的测试计算机上没有此设备。所以我想编写一个Python脚本来模拟端口上的GPRMC语句,而我的另一个Python脚本则监听相同的端口并进行解析。

最佳答案

写入串行端口不会在串行端口上留下可供同一设备读取的消息。这不是串行端口的工作方式,也不是大多数操作系统的编写方式以允许作为缓冲区行为。你真正需要的是一个虚拟串口。

查看this维基百科文章中有关 COM 端口重定向器的部分,看看它是否能满足您的需求。否则,我建议搜索 COM 端口仿真器、串行端口虚拟化等,直到找到适合您的用例和操作系统的软件。这可能很困难,特别是如果计时对您的模拟很重要的话。

编辑:为了让这一点更清楚,我们来谈谈 pySerial 库实际上是如何与 python 通信的。 pySerial 只是与操作系统的串行端口 API 进行通信。通常,操作系统会将其建模为写入信息的位置和从中读取信息的位置(在几乎所有现代计算系统中缓冲)。需要理解的重要一点是,从操作系统的角度(串行端口的建模方式)来看,写入位置只能写入,而读取位置只能读取。这可能是也可能不是实际串行硬件与机器的接口(interface)方式,在我使用过的大多数串行端口硬件和接口(interface)设计中,出于简单性和降低成本的目的,情况都是如此。因此,您只有两个基本选择。

  1. 为操作系统提供一个虚拟串行端口,您可以通过某种方式读取和写入

  2. 可能更简单,将零调制解调器适配器放在计算机的一个串行端口上,然后使用串行电缆连接两个端口。现在,您可以在一个端口上提供服务,在另一个端口上提供模拟设备脚本。

关于python - python中写入和监听同一个串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6921687/

相关文章:

python - pyserial:没有名为工具的模块

python - 串行写入的精确时序

Python BeautifulSoup,解析 XML

python - 请求流示例在我的环境中不起作用

python - 修复无效的 JSON 八进制转义

linux - Linux 中的串口

ruby - ruby 中的数据包创建

serial-port - 逆向工程黑盒串行协议(protocol)

python - 使用pyserial发送二进制数据

Python 键盘模块在循环内无法正常工作