如何连接两个虚拟串口读取GPSFeed+数据?

How to connect two virtual serial ports to read data from GPSFeed+?

最近我下载了 gpsfeed+ 文件,我设置了可执行属性并 运行 使用 (OS: Manjaro):

$ ./gpsfeed+_amd64\

我正在尝试列出通过 Dart 程序连接的所有端口(代码 here by using package dart_serial_port), but it lists nothing. I'm assuming it is because of virtual serial ports are not connected, but I don't know how to get this. There is a program like com0com 但它仅适用于 Windows。

有什么推荐吗?有没有像gpsfeed这样的模拟器?

PS: gpsfeed+ 配置为使用 COM3(RS-232 协议)工作。

步骤

$ chomod +x gpsfeed+_amd64
  • 安装socat包:
$ sudo pacman -S socat
  • 创建一对虚拟串行端口 (VSP) socat:
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
  • 它显示创建的虚拟端口,在本例中为:/dev/pts/4/dev/pts/5。一个端口将是发送器,另一个端口将是接收器
  • 打开gpsfeed+应用程序:
$ ./gpsfeed+_amd64\
  • 配置中为gpsfeed+做:
  1. Connection >> 选中:Serial,取消选中:TCP、UDP、Http
  2. Serial/IP >> 端口:/dev/pts/4 (发送器), 和速度: 9600
  • 运行模拟器(图标为同心圆的按钮)
  • /dev/pts/5读取数据(接收方

Python代码(安装pyserial包):

import serial

ser = serial.Serial('/dev/pts/5', 9600)
iter = 5

while iter > 0:
  print(ser.readline().decode("utf-8"))
  iter -= 1

极少数现有的 Dart 软件包(如 dart_serial_port)不能使用虚拟端口。