上一章我们实现了显示串口号的功能,接下来我们继续完善我们的功能,考虑到我的需求是要做一个串口配置esp8266的上位机, 而往往这类起配置作用的上位机只需要选择串口号和波特率就可以了,并不需要选择数据位,校验位,停止位。这部分是协议规定好的。
一. 实现选择波特率功能
1. 功能规划

新增一个选择波特率的combox和打开串口的pushbutton
2. 页面布局

新增一个comboBox用于显示波特率,设置objectName为baudComboBox.
新增一个pushButton, 用于打开串口, 设置objectName为openSerialBtn, 冰并且设置text为打开串口。
3. 代码实现显示波特率
查看帮助手册, 向comboBox中添加元素时可以采用QStringList形式添加

所以我们在mainwindow.h需要定义一个属性QStringList BaudList;用于存储波特率数据。接着我们在MainWindow中对BaudList进行赋初值,并且利用addItems添加到UI界面。详细代码如下:
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QComboBox>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*显示波特率*/
this->BaudList << "9600" << "19200" <<"115200";
ui->baudComboBox->addItems(this->BaudList);
/*刷新串口*/
this->refreshPort();
/* 点击刷新功能显示*/
connect(ui->refreshPortBtn, &QPushButton::clicked, this, &MainWindow::refreshPort);
}
/*刷新串口处理函数*/
void MainWindow::refreshPort()
{
qDebug() << "刷新串口";
/*清除comboxBox的内容,防止显示重复的串口*/
ui->displayPortComboBox->clear();
/* 读取可以使用的串口*/
this->avaiPortsList = QSerialPortInfo::availablePorts();
/* 提取串口个数*/
int avaiPortNum = avaiPortsList.length();
/*逐个显示*/
for(int i = 0; i < avaiPortNum; i++)
{
ui->displayPortComboBox->addItem(this->avaiPortsList[i].portName());
}
}
MainWindow::~MainWindow()
{
delete ui;
}
mainwindows.h
#ifndef MAINWINDOW_H
#define

本文档介绍了如何使用QT创建一个串口配置工具,重点在于实现选择波特率功能和串口数据的接收。通过在GUI中添加ComboBox展示波特率选项,设置串口参数并监听串口的readyRead信号来实现实时数据显示。代码示例详细展示了从串口配置到数据接收的完整过程。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



