最近学了一下qt,想着用一用吧,正好研究方向也会用到串口调试助手,那就
自己看看能不能写一个吧,仅以此篇记录一下自己学习的过程。
首先了解一下我想实现的具体框架。

大概我想要实现的就是左边的功能。
主要分为3个部分,从上到下依次为串口设置,接收区设置和发送区设置。当然还有许多需
要完善的地方,但这并不是自己主要的研究方向,如有什么不对的地方,还请勿喷(宇宙免责
声明)。
进入正题,首先看一下代码的整体框架。
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
public:
void mLoadSet();
void mSetQSS();
void mQSerialPortSet();
void mReceiveSet();
void mSendSet();
void closeEvent(QCloseEvent *event) override;
这是在widget.h中自己定义的一些方法,载入用户设置,是用于记录用户的上次选择的,
以便本次运行时能够保持用户上次的选择,样式表设置纯属为了见面稍微美观一些,对于
串口调试助手功能来说,并没有什么卵用了,之后每一个方法正好对应框架当中的三个部分
这次主要记录一下第一部分,也就是串口设置部分
private:
QSerialPort mSerialPort;
bool isOpen = false;
QByteArray receivePrimaryData;
bool recDisplayIsPause = false;
QFile recFile;
bool isRecToFile = false;
QByteArray sendPrimaryData;
QByteArray sendTemporaryData;
bool isSendcycle = false;
QTimer cycTimer;
bool isStopSend = false;
HexOnlyEventFilter hexOnlyEventFilter;
这是在头文件中定义的一些属性,串口设置仅用到了:
QSerialPort mSerialPort;
bool isOpen = false;
这两个属性,mSerialPort是一个Qt当中的串口对象,我们可以通过这个对象对串口
进行设置。isOpen是用来记录串口是否打开的标志位。
之后在源文件中实现mQSerialPortset方法:
串口设置主要分为以下几个部分:
1. 首先我们要获取可用串口号:
QList<QSerialPortInfo> serialPorts = QSerialPortInfo::availablePorts();
for(int i = 0; i < serialPorts.size(); i++){
ui->cB_serialNum->addItem(serialPorts[i].portName());
}
首先定义一个QList容器,该容器存放的是QSerialPortInfo,也就是获取到的串口信息,
再调用QSerialPortInfo::availablePorts();方法获取串口信息,之后通过一个for循环
将获取到的可用串口名添加到Qt中的QComboBox中,也就是这里:

2.读取串口参数进行参数设置
当我们点击打开按钮时,会读取用户选择的串口参数,再对串口进行设置,因此我们首先要
将打开按钮的点击信号和槽函数链接起来:
connect(ui->pB_open, &