ubuntu 串口测试

1.概要

2.内容

为了测试你的Qt串口程序发送功能,可以通过以下步骤实现回环测试(无需硬件设备):

  1. 创建虚拟串口对(Ubuntu推荐方案):

# 安装socat工具
sudo apt install socat


# 创建虚拟串口对(ttyS0和ttyS1)
socat -d -d pty,raw,echo=0 pty,raw,echo=0

会得到类似:
2023/07/20 10:00:00 socat[1234] N PTY is /dev/pts/2
2023/07/20 10:00:00 socat[1234] N PTY is /dev/pts/3

  1. 配置Qt程序

// 发送端配置
QSerialPort serial;
serial.setPortName("/dev/pts/2");  // 使用第一个虚拟端口
serial.setBaudRate(QSerialPort::Baud115200);
serial.open(QIODevice::WriteOnly);

// 接收端配置(新建独立程序)
QSerialPort receiver;
receiver.setPortName("/dev/pts/3");  // 使用第二个虚拟端口
receiver.setBaudRate(QSerialPort::Baud115200);
receiver.open(QIODevice::ReadOnly);

// 连接接收信号
QObject::connect(&receiver, &QSerialPort::readyRead, [&](){
    QByteArray data = receiver.readAll();
    qDebug() << "Received:" << data.toHex();
});
  1. 权限处理

sudo usermod -aG dialout $USER # 将当前用户加入串口组
newgrp dialout # 立即生效(或重新登录)
  1. 测试流程
  • 启动接收程序(带上述接收端配置的程序)
  • 在发送程序中执行:

QByteArray testData = "Hello Serial!";
serial.write(testData);
serial.flush();
  • 接收程序控制台会立即显示接收到的数据
  1. 替代方案(快速验证):

// 在发送程序中添加回环测试
QSerialPort loopback;
loopback.setPortName("/dev/pts/2");
loopback.setBaudRate(QSerialPort::Baud115200);
loopback.open(QIODevice::ReadWrite);  // 同时读写模式

// 发送后立即读取
loopback.write("TEST");
if(loopback.waitForReadyRead(1000)){
    qDebug() << "Loopback received:" << loopback.readAll();
}

注意事项

  1. 确保两端波特率等参数完全一致
  2. 虚拟串口设备名每次重启可能变化,建议写配置文件管理
  3. 复杂数据建议使用十六进制显示验证
  4. 实际硬件测试时需交叉连接TX/RX引脚(需电平转换器)

如果需要完整的接收端示例代码,可以告诉我,我可以提供带GUI显示的完整接收程序模板。

3.关联链接

关于串口测试的链接-优快云博客

4.关联知识

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值