2

有没有办法做到这一点而不会出现“COM PORT IN USE”错误?我有一项服务,可以在 com 端口上侦听 gps GPRMC 语句。但是我的测试计算机上没有这个设备。所以我想写一个python脚本来模拟端口上的GPRMC语句,而我的其他python脚本监听同一个端口并解析。

4

1 回答 1

3

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

查看关于 COM 端口重定向器的维基百科文章的这一部分,看看它是否能满足您的需求。否则,我建议搜索 COM 端口仿真器、串行端口虚拟化等,直到找到适合您的用例和操作系统的软件。这可能很难,尤其是在时间对您的模拟很重要的情况下。

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

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

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

于 2011-08-03T06:22:47.427 回答