QT串口通信实战指南
QT串口通信基础
QT提供了QSerialPort类用于串口通信,需在项目文件(.pro)中添加serialport模块:
QT += serialport。基本使用流程包括端口枚举、参数配置、数据读写。
端口枚举通过QSerialPortInfo::availablePorts()获取可用串口列表。参数配置需设置波特率、数据位、校验位等:
QSerialPort serial;
serial.setPortName("COM3");
serial.setBaudRate(QSerialPort::Baud9600);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
数据收发实现
打开串口使用serial.open(QIODevice::ReadWrite)。写入数据通过write()方法:
serial.write("Hello, Serial Port!");
读取数据需连接readyRead()信号到槽函数:
connect(&serial, &QSerialPort::readyRead, [&](){
QByteArray data = serial.readAll();
qDebug() << "Received:" << data;
});
错误处理与调试
错误信号errorOccurred需处理常见问题(如断开连接):
connect(&serial, &QSerialPort::errorOccurred, [](QSerialPort::SerialPortError error){
if(error == QSerialPort::ResourceError)
qDebug() << "Port disconnected!";
});
调试时可启用流控制(Flow Control)日志:
serial.setFlowControl(QSerialPort::SoftwareControl);
高级功能:超时与帧同步
添加读取超时机制防止阻塞:
serial.waitForReadyRead(1000); // 1秒超时
自定义帧同步可通过标识符(如\n)分割数据帧:
QByteArray buffer;
connect(&serial, &QSerialPort::readyRead, [&](){
buffer += serial.readAll();
if(buffer.contains('\n')) {
processFrame(buffer.left(buffer.indexOf('\n')));
buffer.remove(0, buffer.indexOf('\n') + 1);
}
});
跨平台注意事项
Linux/macOS下串口名称通常为/dev/ttyS*或/dev/cu.*。权限问题需通过终端命令解决:
sudo usermod -aG dialout $USER
Windows下需处理COM号大于9的情况(如\\.\COM10):
serial.setPortName("\\\\.\\COM10");
BbS.okacop092.info/PoSt/1120_714064.HtM
BbS.okacop093.info/PoSt/1120_610668.HtM
BbS.okacop094.info/PoSt/1120_769246.HtM
BbS.okacop095.info/PoSt/1120_547058.HtM
BbS.okacop096.info/PoSt/1120_047698.HtM
BbS.okacop097.info/PoSt/1120_983504.HtM
BbS.okacop098.info/PoSt/1120_483857.HtM
BbS.okacop099.info/PoSt/1120_426678.HtM
BbS.okacop114.info/PoSt/1120_168047.HtM
BbS.okacop829.info/PoSt/1120_207182.HtM
BbS.okacop000.info/PoSt/1120_492222.HtM
BbS.okacop001.info/PoSt/1120_548383.HtM
BbS.okacop002.info/PoSt/1120_196245.HtM
BbS.okacop003.info/PoSt/1120_815851.HtM
BbS.okacop004.info/PoSt/1120_991389.HtM
BbS.okacop005.info/PoSt/1120_051292.HtM
BbS.okacop006.info/PoSt/1120_655000.HtM
BbS.okacop007.info/PoSt/1120_144721.HtM
BbS.okacop008.info/PoSt/1120_135132.HtM
BbS.okacop009.info/PoSt/1120_026359.HtM
BbS.okacop000.info/PoSt/1120_113528.HtM
BbS.okacop001.info/PoSt/1120_261321.HtM
BbS.okacop002.info/PoSt/1120_521505.HtM
BbS.okacop003.info/PoSt/1120_032998.HtM
BbS.okacop004.info/PoSt/1120_039366.HtM
BbS.okacop005.info/PoSt/1120_136646.HtM
BbS.okacop006.info/PoSt/1120_940603.HtM
BbS.okacop007.info/PoSt/1120_515230.HtM
BbS.okacop008.info/PoSt/1120_686869.HtM
BbS.okacop009.info/PoSt/1120_206827.HtM
BbS.okacop000.info/PoSt/1120_987793.HtM
BbS.okacop001.info/PoSt/1120_936365.HtM
BbS.okacop002.info/PoSt/1120_861988.HtM
BbS.okacop003.info/PoSt/1120_782545.HtM
BbS.okacop004.info/PoSt/1120_121472.HtM
BbS.okacop005.info/PoSt/1120_723670.HtM
BbS.okacop006.info/PoSt/1120_877566.HtM
BbS.okacop007.info/PoSt/1120_802084.HtM
BbS.okacop008.info/PoSt/1120_348927.HtM
BbS.okacop009.info/PoSt/1120_625882.HtM
BbS.okacop000.info/PoSt/1120_086210.HtM
BbS.okacop001.info/PoSt/1120_406738.HtM
BbS.okacop002.info/PoSt/1120_463368.HtM
BbS.okacop003.info/PoSt/1120_312690.HtM
BbS.okacop004.info/PoSt/1120_799216.HtM
BbS.okacop005.info/PoSt/1120_275315.HtM
BbS.okacop006.info/PoSt/1120_955869.HtM
BbS.okacop007.info/PoSt/1120_172157.HtM
BbS.okacop008.info/PoSt/1120_469952.HtM
BbS.okacop009.info/PoSt/1120_452447.HtM
BbS.okacop000.info/PoSt/1120_378284.HtM
BbS.okacop001.info/PoSt/1120_430924.HtM
BbS.okacop002.info/PoSt/1120_962860.HtM
BbS.okacop003.info/PoSt/1120_726286.HtM
BbS.okacop004.info/PoSt/1120_379313.HtM
BbS.okacop005.info/PoSt/1120_283389.HtM
BbS.okacop006.info/PoSt/1120_097763.HtM
BbS.okacop007.info/PoSt/1120_007159.HtM
BbS.okacop008.info/PoSt/1120_020445.HtM
BbS.okacop009.info/PoSt/1120_175350.HtM
BbS.okacop000.info/PoSt/1120_699525.HtM
BbS.okacop001.info/PoSt/1120_949186.HtM
BbS.okacop002.info/PoSt/1120_762001.HtM
BbS.okacop003.info/PoSt/1120_509407.HtM
BbS.okacop004.info/PoSt/1120_725157.HtM
BbS.okacop005.info/PoSt/1120_393730.HtM
BbS.okacop006.info/PoSt/1120_752626.HtM
BbS.okacop007.info/PoSt/1120_302464.HtM
BbS.okacop008.info/PoSt/1120_116585.HtM
BbS.okacop009.info/PoSt/1120_442944.HtM
BbS.okacop000.info/PoSt/1120_370061.HtM
BbS.okacop001.info/PoSt/1120_393438.HtM
BbS.okacop002.info/PoSt/1120_508496.HtM
BbS.okacop003.info/PoSt/1120_772844.HtM
BbS.okacop004.info/PoSt/1120_565563.HtM
BbS.okacop005.info/PoSt/1120_033328.HtM
BbS.okacop006.info/PoSt/1120_766064.HtM
BbS.okacop007.info/PoSt/1120_160020.HtM
BbS.okacop008.info/PoSt/1120_366679.HtM
BbS.okacop009.info/PoSt/1120_634651.HtM


