在python中编写和侦听相同的串行端口

在python中编写和侦听相同的串行端口,python,serial-port,pyserial,Python,Serial Port,Pyserial,是否仍然可以在不出现“COM端口正在使用”错误的情况下执行此操作?我有一个在com端口上收听gps GPRMC语句的服务。但是我的测试计算机上没有这个设备。因此,我想编写一个python脚本来模拟端口上的GPRMC语句,而我的另一个python脚本则侦听同一端口并进行解析。写入串行端口不会在串行端口上留下消息供同一设备读取。这不是串行端口的工作方式,也不是大多数操作系统编写为允许缓冲区行为的方式。您真正需要的是一个虚拟串行端口 查看wikipedia文章中有关COM端口重定向器的部分,看看是否有

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

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

查看wikipedia文章中有关COM端口重定向器的部分,看看是否有任何重定向器可以满足您的需求。否则,我建议搜索COM端口模拟器、串行端口虚拟化等,直到找到适合您的用例和操作系统的软件。这可能很难,尤其是当时间对模拟很重要时

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

  • 为操作系统提供一个虚拟串行端口,您可以通过某种方式对其进行读写

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