linux - 如何连接两个虚拟串口从 GPSFeed+ 读取数据?
问题描述
最近我下载了 gpsfeed+文件,我设置了可执行属性并使用(操作系统:Manjaro)运行它:
$ ./gpsfeed+_amd64\
我正在尝试列出通过 Dart 程序连接的所有端口(此处使用包dart_serial_port进行代码),但它什么也没列出。我假设这是因为没有连接虚拟串口,但我不知道如何得到这个。有一个像com0com这样的程序,但它只能在 Windows 上运行。
有什么推荐吗?有没有其他类似的模拟器gpsfeed
?
PS: gpsfeed+
配置为使用 COM3(协议 RS-232)工作。
解决方案
脚步
gpsfeed+
从https://gpsfeed.sourceforge.io/下载- 使下载的文件可执行:
$ 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+
:
- 连接>> 检查:串行,并取消选中:TCP、UDP、Http
- 串行/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
)不适用于虚拟端口。
推荐阅读
- c++ - 如何将源文件传递给 gdbserver
- javascript - 当我单击菜单中的按钮时,赛普拉斯没有关闭菜单
- laravel - Laravel 远程数据库选择:快速修补,视图慢(30 秒延迟)?
- r - 将字符转换为百分比 R
- android - MQTT Android client not connecting to broker
- bash - 在 bash 中向循环提供两个变量时遇到问题
- web-applications - Vue.js 生命周期在我想要的时间显示特定视图
- raspberry-pi - raspistill 返回文件未找到
- python - TypeError:只能将列表(不是“str”)连接到列表 - 自回归模型
- javascript - Javascript Fib 系列测试用例失败