一、添加文件
①在项目中添加C++文件,继承自QObject
②添加必要模块以及头文件
项目pro文件添加 serialport模块
![]()
项目.h文件中添加头文件
#include <QSerialPort>
#include <QSerialPortInfo> 
二、具体代码
①在.h文件中声明一个类对象
QSerialPort *serial; 
并在.cpp构造函数中实例化
②定义一个public的打开串口函数,串口号、波特率、数据位等等可根据情况选择
sendMessage是一个自定义信号,可更换qdebug打印信息
void SerialRFID::Open_serial_RFID()
{
    QString portName = "COM8";
    QString baudRate = "9600";
    QSerialPortInfo info(portName);
    if(info.isBusy())
    {
        sendMessage("COM:" + portName + "--The serial port is occupied");
        return;
    }
    serial -> setPortName(portName);
    serial -> setBaudRate(baudRate.toInt());
    serial -> setStopBits(QSerialPort::TwoStop);
    serial -> setDataBits(QSerialPort::Data7);
    serial -> setParity(QSerialPort::EvenParity);
    serial -> setFlowControl(QSerialPort::NoFlowControl);
    bool flag = serial -> open(QIODevice::ReadWrite);
    if(!flag)
    {
        sendMessage("COM:" + portName + "--Failed to open serial port:");
        serial -> clearError();
    }
    else
    {
        sendMessage("COM:" + portName + "--The serial port is open:");
    }
}
 
③定义一个槽函数,并在构造函数中连接
connect(serial,SIGNAL(readyRead()),this,SLOT(slot_serialRead())); 
在读串口数据槽函数中对读到的数据进行处理
void SerialRFID::slot_serialRead()
{
    QByteArray receiveBuf = serial -> readAll();
    QString RS = receiveBuf;
    。。。
} 
④定义一个public类型函数进行写串口数据,参数可去掉
void SerialRFID::slot_readHRWordData(int address)
{
    QString startStr = "RDSTA101000064";
    char *readStr;
    startStr.append("*\r");
    QByteArray readBa = startStr.toUtf8();
    readStr = readBa.data();
    serial -> clear();
    serial -> write(readStr);
} 
                


















