QT--串口UART

时间:2019-10-11
本文章向大家介绍QT--串口UART,主要包括QT--串口UART使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
qt工程文件
        1)FirstQt.pro    -->工程文件
        2)mainwindow.h    -->头文件
        3)main.cpp        -->c++文件,qt主界面程序。(不要动)
        4)mainwindow.cpp    -->界面程序
        5)mainwindow.ui    -->界面文件
QT头文件  
         #include <QString>    //字符串类型头文件
         #include <QDebug>    //调试输出语句头文件
  
mainwindow.cpp:

mserial = new QSerialPort;
if(mserial!=NULL)
{
    qDebug()<<tr("扫描存在的串口");
    foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts() )
    {
        QSerialPort ser;
        ser.setPort(info);
        /* 判断端口是否能打开 */
        if(ser.open(QIODevice::ReadWrite))
        {
                ui->combobox->addItem(ser.portName());
                qDebug()<<tr("Port:")+ser.portName()+tr("\r\n");
                ser.close();
        }
    }
}

int com_num = 0;
void MainWindow::on_pushButton_clicked()
{
    com_num++;
    if(com_num == 1)
    {
        //设置串口名称
        mserial->setPortName(ui->combobox->currentText());
        //设置波特率
        mserial->setBaudRate(ui->baud_com->currentText().toInt());
        //设置数据位数
        mserial->setDataBits(QSerialPort::Data8);
        //设置奇偶校验
        mserial->setParity(QSerialPort::NoParity);
        //设置停止位
        mserial->setStopBits(QSerialPort::OneStop);
        //设置流控制
        mserial->setFlowControl(QSerialPort::NoFlowControl);
        mserial->setReadBufferSize(1024);

        //打开串口
        if(mserial->open(QIODevice::ReadWrite)==true)
        {
            QObject::connect(mserial,&QSerialPort::readyRead,this,serialrecvmsevent);
            qDebug("open seccess\n");
            ui->pushButton->setText("关闭串口");
        }
        else
        {
            qDebug("open false\n");
            com_num = 0;
        }
    }
    if(com_num > 1)
    {
        if(mserial->isOpen())
        {
            qDebug("close seccess\n");
            mserial->close();
            ui->pushButton->setText("打开串口");
            com_num = 0;
        }
    }
}

void MainWindow::serialrecvmsevent()
{
    QByteArray buffer;
    buffer = mserial->readAll();
    if(!buffer.isEmpty())
    {
         buffer.clear();
    }
}

*.pro:
QT += core gui printsupport serialport

mainwindow.h:
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

public:
        QSerialPort *mserial;

原文地址:https://www.cnblogs.com/threegold/p/11637602.html