使用 minicom 录制串口报文到串口报文,并通过虚拟串口进行回放
在 Ubuntu 上使用 minicom 录制串口报文到 gps.log 文件,并通过虚拟串口进行回放,可以按照以下步骤操作:
1. 安装 minicom
确保已安装 minicom:
sudo apt update
sudo apt install minicom
2. 配置虚拟串口
为了回放串口数据,需要创建一对虚拟串口(例如 /dev/ttyS0 和 /dev/ttyS1)用于模拟串口通信。可以使用 socat 创建虚拟串口对。
安装 socat
sudo apt install socat
创建虚拟串口对
运行以下命令创建一对虚拟串口:
socat -d -d pty,raw,echo=0 pty,raw,echo=0
输出示例:
2025/06/05 04:23:45 socat[1234] N PTY is /dev/pts/0
2025/06/05 04:23:45 socat[1234] N PTY is /dev/pts/1
这里,/dev/pts/0 和 /dev/pts/1 是一对虚拟串口。记下这两个设备名,用于后续录制和回放。
3. 使用 minicom 录制串口报文
假设你的 GPS 设备连接到某个串口(例如 /dev/ttyUSB0 或虚拟串口 /dev/pts/0),以下是录制步骤:
启动 minicom
minicom -D /dev/ttyUSB0 -b 115200
-D /dev/ttyUSB0:指定串口设备(根据实际设备替换)。-b 115200:设置波特率(根据 GPS 设备要求调整,例如 4800、9600 或 115200)。
开启日志录制
在 minicom 界面中:
- 按
Ctrl+A,然后按L进入日志功能。 - 输入日志文件名,例如
gps.log。 minicom会开始将串口数据录制到gps.log文件。
退出 minicom
录制完成后,按 Ctrl+A,然后按 X 退出 minicom。
4. 通过虚拟串口回放 gps.log
要回放 gps.log,可以使用虚拟串口对(例如 /dev/pts/0 和 /dev/pts/1),将数据从一个虚拟串口发送到另一个虚拟串口。
步骤:
-
确保虚拟串口对仍在运行
如果之前的socat进程已关闭,重新运行:socat -d -d pty,raw,echo=0 pty,raw,echo=0 -
回放 gps.log
使用cat或dd将gps.log的内容发送到虚拟串口(例如/dev/pts/0):cat gps.log > /dev/pts/0或控制速度以模拟实时数据:
pv -q -L 115200 gps.log > /dev/pts/0pv -L 115200:限制数据速率(以字节/秒为单位,需根据波特率调整)。
最好是编写脚本, 模拟数据间隔
while read -r line; do echo -e "$line\r" > /dev/pts/15 sleep 0.1 # 模拟数据间隔 done < gps.log -
在另一端接收数据
使用minicom连接到另一个虚拟串口(例如/dev/pts/1)查看回放数据:minicom -D /dev/pts/1 -b 115200你将看到
gps.log中的数据通过虚拟串口回放。
5. 注意事项
-
权限问题:如果遇到权限问题,确保用户有权访问串口设备:
sudo usermod -a -G dialout $USER sudo chmod 666 /dev/pts/0 /dev/pts/1然后重新登录或重启终端。
-
波特率匹配:录制和回放时,波特率必须与 GPS 设备一致。
-
时间戳:如果
gps.log包含时间戳,可能需要预处理文件以移除非串口数据。 -
实时回放:使用
pv控制数据发送速度可以更真实地模拟 GPS 数据流。
6. 可选:自动化脚本
你可以编写一个简单的脚本自动化录制和回放:
#!/bin/bash
# 录制
minicom -D /dev/ttyUSB0 -b 115200 -C gps.log
# 回放
socat -d -d pty,raw,echo=0 pty,raw,echo=0 &
sleep 2
cat gps.log > /dev/pts/0 &
minicom -D /dev/pts/1 -b 115200
保存为 gps_replay.sh,赋予执行权限(chmod +x gps_replay.sh),然后运行:
./gps_replay.sh
如果有进一步问题或需要更详细的配置,请提供 GPS 设备的具体信息或串口参数!
1193

被折叠的 条评论
为什么被折叠?



