# Qt_Serial **Repository Path**: wang-jialll/qt_-serial ## Basic Information - **Project Name**: Qt_Serial - **Description**: 一个基于Qt的简单串口助手 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-22 - **Last Updated**: 2025-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Qt ## README # Qt简易串口助手开发流程 [TOC] > Markdown语法生成目录 > > `[TOC]` ## 一、项目添加串口模块 ```c++ QT += core gui serialport ``` 前两个为核心模块,串口模块是`serialport` ## 二、UI界面设计 对布局采用合理的对其模式,最后将所有区域网格化处理,即得出这样的效果 ![Alt Text](images/10.png) ## 三、检测端口 ```c++ #include //串口检测所需头文件 //在widget构造函数中写入 //检测电脑端口 QStringList SerialName;//定义储存端口 foreach (const QSerialPortInfo &info , QSerialPortInfo::availablePorts()) { SerialName << info.portName(); } //显示端口到SeialCb ui->SeialCb->addItems(SerialName); ``` 通过这样的操作即可将端口显示在QComboBox控件中 ![Alt Text](images/1.png) ## 四、建立一个串口对象 1. 包含串口的头文件 ```c++ #include //串口头文件 #include //提示框的头文件 ``` 2. 在widget头文件的public中声明 ```c++ QSerialPort *serilaPort; ``` 3. 在widget构造函数中new一个对象 ```c++ serilaPort = new QSerialPort; ``` 4. 在打开串口的槽函数中 ```c++ void Widget::on_btn_open_clicked() { QSerialPort::BaudRate baudRate; QSerialPort::DataBits dataBits; QSerialPort::StopBits stopBits; QSerialPort::Parity checkBits;//校验位 if( ui->baudrateCb->currentText() == "4800" ){ baudRate = QSerialPort::Baud4800; }else if( ui->baudrateCb->currentText() == "9600" ){ baudRate = QSerialPort::Baud9600; }else if( ui->baudrateCb->currentText() == "115200" ){ baudRate = QSerialPort::Baud115200; } if( ui->DataCb->currentText() == "5")dataBits = QSerialPort::Data5; else if( ui->DataCb->currentText() == "6")dataBits = QSerialPort::Data6; else if( ui->DataCb->currentText() == "7")dataBits = QSerialPort::Data7; else if( ui->DataCb->currentText() == "8")dataBits = QSerialPort::Data8; if( ui->StopCb->currentText() == "1")stopBits = QSerialPort::OneStop; else if( ui->StopCb->currentText() == "1.5")stopBits = QSerialPort::OneAndHalfStop; else if( ui->StopCb->currentText() == "2")stopBits = QSerialPort::TwoStop; if( ui->CheckCb->currentText() == "None")checkBits = QSerialPort::NoParity; serilaPort->setPortName(ui->SeialCb->currentText() ); serilaPort->setBaudRate( baudRate ); serilaPort->setDataBits( dataBits ); serilaPort->setStopBits( stopBits ); serilaPort->setParity( checkBits ); if(serilaPort->open( QIODevice::ReadWrite ) == true){ QMessageBox::information( this,"提示","成功" ); }else{ QMessageBox::information( this,"提示","失败" ); } } ``` 出现此为打开成功 ![Alt Text](images/2.png) ## 五、关联收发(信号与槽) ```c++ //关联收发 connect( serilaPort,SIGNAL(readyRead()),this,SLOT(serilaPortReadyRead_Slot()) ); ``` ``` void Widget::serilaPortReadyRead_Slot() { QString buf; buf = QString( serilaPort->readAll() ); ui->ReciveEdit->appendPlainText(buf); } ``` ## 六、完善其余按键 ```c++ void Widget::on_btn_close_clicked() { serilaPort->close(); } void Widget::on_btn_send_clicked() { serilaPort->write( ui->SendtEdit_2->toPlainText().toLocal8Bit().data() ); } void Widget::on_btn_clear_clicked() { ui->ReciveEdit->clear(); } ``` ## 七、添加图标 1. 在pro文件最后添加这一行代码,要求格式必须为.ico ```c++ RC_ICONS = favicon.ico ``` 2. 运行之后如下 ![Alt Text](images/5.png) ## 八、打包应用 1. 在Qt中切换为Release,编译工程。 ![Alt Text](images/4.png) 2. 把生成的exe文件拉到桌面上放在一个单独的文件夹内。 3. 打开Qt的控制台 ![Alt Text](images/6.png) 输入命令进入桌面的文件夹 ![Alt Text](images/7.png) 使用windeployqt进行动态配置库文件 ![Alt Text](images/8.png) ![Alt Text](images/9.png) # 总体效果 刚买的一块ESP32C3开发板拿来测试,后续回跟进ESP32C3的开发学习。 ![Alt Text](images/3.png)