QT5串口上位机——从零开始教你写02

上一篇:QT5串口上位机——从零开始教你写01

简单串口编写

2.QSerialPort模块配置

QT的QtSerialPort模块

Qt中提供了两个C++类,分别是QSerialPortQSerialPortInfo

它们功能如下:

QSerialPort :提供了操作串口的各种接口。

QSerialPortInfo :可以提供计算机中可用串口的各种信息。

QtSerialPort模块使用方法

首先,需要在pro文件中增加如下内容:

QT += serialport    

然后执行qmake,如果未执行 后面添加头文件时会报错。

image-20211005013634387

给项目添加新的**C++**类,

image-20211027145302605

选择C++ Class

取名Serial,点击下一步即可生成对应的文件image-20211005014205307

在生成的serial.h中进行如下操作

#ifndef SERIAL_H
#define SERIAL_H

#include <QObject>
#include <QSerialPort>       //添加串口类的头文件
#include <QSerialPortInfo>	 //添加串口信息的头文件

class Serial : public QObject
{
   
    Q_OBJECT
public:
    explicit Serial(QObject *parent = nullptr);
    ~Serial(void);			//添加析构函数
    void SerialOpen();		//添加打开串口函数
    void SerialClose();		//添加关闭串口函数
private:
    QSerialPort* MySerial;  //添加串口类成员

signals:
    void SetInfo(QString info);
    void isnoSerialOpen();
};

#endif // SERIAL_H


分别将光标置于函数后面 按下快捷键 alt + enter

    ~Serial(void);			//添加析构函数
    void SerialOpen();		//添加打开串口函数
    void SerialClose();		//添加关闭串口函数

出现以下图片时 回车 即可在 cpp 文件中定义函数。
image-20211024112606270

动图展示。

~Serial(void); 用来delete 之后程序中 new出来的变量

void SerialOpen();和 void SerialClose();则是用来进行打开串口的操作。

首先在 cpp 文件中 对MySerial进行实例化。

image-20211027151715679

然后,鼠标放在MySerial上按下快捷键F1,打开QSerialPort的帮助文档。找到Public Functions

image-20211027152623327

打开Detailed Description
image-20211027153753566

从帮助文档中可以看出来,我们需要对串口进行的一些配置。

配置串口参数

操作步骤如下:

1.首先需要设置要打开的串口名,这里可以通过**setPortName()或者setPort()**进行配置

2.然后通过使用open()函数以 read-only (r/o), write-only (w/o), or read-write (r/w) 模式之一打开串口

3.然后,检测串口是否被打开 (且没有其他的进程或者线程打开串口,如果有就关闭串口在重新打开)

4.最后,配置串口参数如配置串口名,波特率,数据位,校验位,停止位和流控位

配置函数如下:

 void setPortName(const QString &name) 
 bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)
 bool setDataBits(QSerialPort::DataBits dataBits)
 bool setParity(QSerialPort::Parity parity)
 bool setStopBits(QSerialPort::StopBits stopBits)
 bool setFlowControl(QSerialPort::FlowControl flowControl)

首先,我们需要QStringqint32这两个类型的name参数和baudRate参数,这是通过ui界面的Qcombobox选项得到的。因为使用多线程的原因,不能直接调用,所以,这里通过构建结构体,通过传递结构体来传递参数。

鼠标右键点击工程,添加一个新的cpp头文件

image-20211027193012335

设置头文件名称为 SerialInfo.h ,点击下一步,完成。

image-20211027193154402

添加 SerialInfo.h的内容如下。

#ifndef SERIALINFO_H
#define SERIALINFO_H
#include <QVector>
#include <QMetaType>

typedef struct SerialInfos         //串口配置信息
{
   
     QString comName;    //串口名称
     qint32 baudRate;     //波特率
     qint32 dataBits;     //数据位
     qint32 parity;       //校验位
     qint32 stopBits;     //停止位
     qint32 flowControl;  //流控位
     qint32 Encode;       //编码格式

}Sinfo;


//通过Q_DECLARE_METATYPE声明后,就可以让自定义的类型设置到QVariant。
Q_DECLARE_METATYPE(Sinfo);

#endif // SERIALINFO_H

serial.h中添加头文件

#include "SerialInfo.h"

image-20211027194025777

并添加私有成员

private:
    QSerialPort* MySerial;
    Sinfo *info=nullptr;    //串口配置
	QString InfoSet;        //存储串口配置

image-20211027194229817

修改后的serial.h内容如下

#ifndef SERIAL_H
#define SERIAL_H

#include <QObject>
#include <QSerialPort>       //添加串口类的头文件
#include <QSerialPortInfo>	 //添加串口信息的头文件
#include "SerialInfo.h"

class Serial : public QObject
{
   
    Q_OBJECT
public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值