使用 minicom 录制串口报文并回放
使用 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/0
pv -L 115200
:限制数据速率(以字节/秒为单位,需根据波特率调整)。
最好是编写脚本, 模拟数据间隔
while read -r line; doecho -e "$line\r" > /dev/pts/15sleep 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 设备的具体信息或串口参数!