如何连接两个虚拟串口读取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 协议)工作。
步骤
- 从 https://gpsfeed.sourceforge.io/
下载 gpsfeed+
- 使下载的文件可执行:
$ 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+
做:
- Connection >> 选中:Serial,取消选中:TCP、UDP、Http
- 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
)不能使用虚拟端口。
最近我下载了 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 协议)工作。
步骤
- 从 https://gpsfeed.sourceforge.io/ 下载
- 使下载的文件可执行:
gpsfeed+
$ 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+
做:
- Connection >> 选中:Serial,取消选中:TCP、UDP、Http
- 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
)不能使用虚拟端口。