当前位置: 首页 > news >正文

使用 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 界面中:

  1. Ctrl+A,然后按 L 进入日志功能。
  2. 输入日志文件名,例如 gps.log
  3. minicom 会开始将串口数据录制到 gps.log 文件。
退出 minicom

录制完成后,按 Ctrl+A,然后按 X 退出 minicom

4. 通过虚拟串口回放 gps.log

要回放 gps.log,可以使用虚拟串口对(例如 /dev/pts/0/dev/pts/1),将数据从一个虚拟串口发送到另一个虚拟串口。

步骤:
  1. 确保虚拟串口对仍在运行
    如果之前的 socat 进程已关闭,重新运行:

    socat -d -d pty,raw,echo=0 pty,raw,echo=0
    
  2. 回放 gps.log
    使用 catddgps.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
    
  3. 在另一端接收数据
    使用 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 设备的具体信息或串口参数!

http://www.lqws.cn/news/163891.html

相关文章:

  • 数据融合是什么?进行数据融合的4大关键环节!
  • AI开启光伏新时代:精准计算每小时发电量​
  • 【JS进阶】ES5 实现继承的几种方式
  • 微软认证考试科目众多?该如何选择?
  • 基于SpringBoot的房屋租赁系统的设计与实现(thymeleaf+MySQL)
  • IDEA202403 设置主题和护眼色
  • 【QT】qtdesigner中将控件提升为自定义控件后,css设置样式不生效(已解决,图文详情)
  • C# 委托UI控件更新例子,何时需要使用委托
  • Agentic AI 和 Agent AI 到底区别在哪里?
  • Redis大量key集中过期怎么办
  • Qt 开发中的父类与父对象的区别和父对象传递:如何选择 `QWidget` 或 `QObject`?
  • 基于Canvas实现画布
  • Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
  • 西门子SCL之IF-ELSIF语句详解及应用(安全控制代码)
  • 【计组】真题 2015 大题
  • Vue---vue使用AOS(滚动动画)库
  • 分布式光纤传感(DAS)技术应用解析:从原理到落地场景
  • 【QT】使用QT帮助手册找控件样式
  • 基于责任链模式进行订单参数的校验
  • 自动化办公集成工具:一站式解决文档处理难题
  • React Router 中 navigate 后浏览器返回按钮不起作用的问题记录
  • React Hooks 基础指南
  • 如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?
  • Python数据可视化科技图表绘制系列教程(四)
  • 动静态库的使用(Linux下)
  • 好得睐:以品质守味、以科技筑基,传递便捷与品质
  • Cilium动手实验室: 精通之旅---6.Cilium IPv6 Networking and Observability - Lab
  • 【2025年】解决Burpsuite抓不到https包的问题
  • 灵活控制,modbus tcp转ethernetip的 多功能水处理方案
  • 兰亭妙微 | 医疗软件的界面设计能有多专业?