本文将以“极简、可直接运行、新手能看懂”为核心手把手带你实现一个简易串口助手类似SecureCRT、串口调试助手从项目配置到代码实现每一步都有详细说明复制代码就能跑通学会后可直接用于实际硬件调试实用性拉满一、核心前提Qt串口开发必备基础Qt串口开发的核心依赖「QSerialPort」模块无需额外安装插件只要你的Qt版本5.10及以上推荐Qt5.15/Qt6正常配置后就能直接使用核心要素如下核心模块QT serialport必须在pro文件中添加否则无法调用串口相关类核心头文件QSerialPort串口操作核心类、QSerialPortInfo串口信息扫描类核心功能扫描电脑可用串口 → 配置串口参数 → 打开串口 → 发送数据 → 接收数据五大步骤缺一不可提示如果你的Qt版本低于5.10可能缺少QSerialPort模块建议升级Qt版本Qt5.15 LTS版本最稳定适配大部分系统。二、第一步配置Qt项目关键步骤必做无论你是新建项目还是在已有项目中添加串口功能都必须先配置pro文件否则会出现“未定义标识符”“无法找到头文件”等报错步骤如下打开Qt Creator新建「Qt Widgets Application」或控制台应用本文以控制台为例更简洁新手易上手找到项目目录下的「.pro」文件如serialTool.pro双击打开在pro文件中添加一行代码QT core gui serialport注意Qt6版本可省略core gui直接写QT serialport按「CtrlS」保存pro文件Qt会自动加载串口模块左下角会显示“正在解析项目”加载完成后无报错即配置成功。避坑提醒很多新手报错“QSerialPort未定义”90%都是因为没加这个配置一定要先做这一步三、完整可直接运行代码纯控制台版复制即跑为了让新手快速看到效果我整理了最简可运行例程无需修改过多内容复制到main.cpp中只需修改「串口名」根据自己电脑的串口修改就能直接运行代码中每一步都有详细注释零基础也能看懂。#include QCoreApplication #include QSerialPort // 串口操作核心类 #include QSerialPortInfo // 串口信息扫描类 #include QDebug // 调试输出打印串口信息、收发数据 #include QObject // 信号槽依赖 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // // 1. 扫描电脑上所有可用串口关键先找对串口名 // qDebug() 电脑可用串口列表 ; // 遍历所有可用串口打印串口信息串口名、描述、制造商 foreach(const QSerialPortInfo info, QSerialPortInfo::availablePorts()) { qDebug() 串口名 info.portName(); // 关键如COM3、/dev/ttyUSB0Linux qDebug() 描述 info.description(); // 如USB-SERIAL CH340常用CH340串口 qDebug() 制造商 info.manufacturer(); qDebug() --------------------------------------; } // // 2. 创建串口对象相当于“打开串口工具” // QSerialPort serial; // 实例化串口对象 // // 3. 配置串口参数必须和硬件一致否则乱码/收不到数据 // serial.setPortName(COM3); // 重点修改你的串口名从上面扫描结果中复制 serial.setBaudRate(QSerialPort::Baud9600); // 波特率9600最常用可改为115200 serial.setDataBits(QSerialPort::Data8); // 数据位8位固定常用 serial.setParity(QSerialPort::NoParity); // 校验位无固定常用 serial.setStopBits(QSerialPort::OneStop); // 停止位1位固定常用 serial.setFlowControl(QSerialPort::NoFlowControl); // 流控制无固定常用 // // 4. 打开串口读写模式相当于“打开串口连接” // if(serial.open(QIODevice::ReadWrite)) // 以“读写”模式打开串口 { qDebug() ✅ 串口打开成功可正常收发数据; } else { qDebug() ❌ 串口打开失败 serial.errorString(); // 打开失败直接退出程序避免后续报错 return 0; } // // 5. 接收数据信号槽机制收到数据自动触发无需循环查询 // // 连接串口“收到数据”信号readyRead和自定义处理函数lambda表达式简化代码 QObject::connect(serial, QSerialPort::readyRead, []() { QByteArray recvData serial.readAll(); // 读取所有收到的数据字节数组 QString recvStr QString::fromLocal8Bit(recvData); // 转字符串解决中文乱码 qDebug() 收到数据 recvStr; }); // // 6. 发送数据主动发送可修改发送内容 // QByteArray sendData Hello UART! 你好串口; // 要发送的数据 serial.write(sendData); // 发送数据字节数组格式 qDebug() 已发送数据 QString::fromLocal8Bit(sendData); // 运行程序Qt事件循环保证信号槽正常工作 return a.exec(); }四、运行效果演示新手必看配置好pro文件、修改正确串口名后点击Qt Creator的「运行」按钮绿色三角控制台会输出以下内容说明运行成功 电脑可用串口列表 串口名 COM3描述 USB-SERIAL CH340制造商 wch.cn--------------------------------------✅ 串口打开成功可正常收发数据 已发送数据 Hello UART! 你好串口 收到数据 这是单片机发来的消息五、超详细知识点拆解新手必看避免踩坑1. 串口参数必须“一一对应”核心重点串口通信的前提是「参数一致」如果你的电脑串口参数和硬件单片机、传感器不一致会出现“乱码”“收不到数据”“发送失败”等问题常用参数如下固定搭配新手直接用参数类型常用值说明波特率9600、115200最常用和硬件配置一致即可数据位8位QSerialPort::Data8固定常用无需修改校验位无校验QSerialPort::NoParity固定常用避免校验错误停止位1位QSerialPort::OneStop固定常用无需修改流控制无流控制QSerialPort::NoFlowControl新手无需启用避免复杂配置2. 两个核心类掌握这两个搞定Qt串口QSerialPortInfo用于「扫描串口」获取电脑上所有可用串口的信息串口名、描述、制造商核心作用是帮我们找到“正确的串口名”避免写错串口名导致打开失败。QSerialPort串口操作的核心类负责「打开/关闭串口、发送数据、接收数据」核心方法如下setPortName()设置串口名如COM3open()打开串口必须指定读写模式QIODevice::ReadWritewrite()发送数据参数为QByteArray字节数组readAll()读取所有收到的数据readyRead()信号收到数据时自动触发。3. 接收数据的核心原理Qt信号槽机制很多新手会疑惑“为什么不用循环一直读取数据”这就是Qt信号槽的优势——高效、简洁原理如下硬件单片机向电脑发送数据串口收到数据后自动触发QSerialPort的「readyRead信号」我们通过connect()函数将readyRead信号和自定义处理函数绑定信号触发后自动调用处理函数用readAll()读取数据无需手动循环查询。六、新手常见坑已帮你避开直接对照解决整理了新手最常遇到的5个报错每个坑都有对应的解决方法遇到问题直接对照查找不用再查百度坑1pro文件没加serialport → 报错“未定义标识符QSerialPort”✅ 解决在pro文件中添加「QT serialport」保存后重新构建项目。坑2串口名写错如COM3写成COM4→ 报错“串口打开失败”✅ 解决先运行程序查看控制台打印的“可用串口列表”复制正确的串口名替换。坑3串口被其他软件占用 → 报错“无法打开串口”✅ 解决关闭电脑上的串口助手、单片机调试工具等释放串口资源。坑4串口参数不匹配 → 乱码、收不到数据✅ 解决确保波特率、数据位等参数和单片机/硬件的配置完全一致重点检查波特率。坑5中文乱码 → 接收/发送的中文显示乱码✅ 解决用「QString::fromLocal8Bit()」将QByteArray转字符串代码中已添加无需修改。七、学会后能做什么实用性拉满这个简易串口工具看似简单却能覆盖嵌入式、电子开发的大部分串口调试场景学会后你可以直接扩展自制串口调试助手替代第三方工具单片机STM32、Arduino上位机收发数据、控制硬件传感器数据显示工具如温湿度、心率传感器数据实时显示蓝牙串口通信工具蓝牙转串口模块的调试工业、嵌入式上位机90%的嵌入式上位机核心都是串口通信。八、下一步学习方向进阶推荐如果想进一步提升实现更专业的串口工具可以跟着我学习以下内容后续会更新详细教程带GUI界面的串口工具添加输入框、发送按钮、接收显示区更直观16进制发送/接收调试硬件常用避免ASCII码无法显示的问题串口数据实时绘图用Qt Charts绘制波形图直观查看传感器数据变化串口数据保存到数据库将接收的数据存入MySQL、SQLite方便后续分析。总结超简单新手必记Qt串口开发本质就3步配置pro文件添加「QT serialport」核心操作扫描串口 → 配置参数 → 打开串口收发数据发送用write()接收用「readyRead信号 readAll()」。本文的代码极简、可直接运行零基础也能快速上手如果你在实操中遇到问题或者有其他需求如GUI界面开发、进阶功能欢迎在评论区留言探讨日常深耕嵌入式、物联网、Qt开发、协议开发相关技术有技术答疑、项目合作、毕设指导需求均可私信交流觉得文章有帮助的话别忘了点赞、收藏、关注后续会分享更多Qt实战、嵌入式开发干货一起从零基础成长为技术大佬