Qt 串口

作者: wjundong | 来源:发表于2023-01-06 01:03 被阅读0次

    main.cpp

    #include <QtWidgets/QApplication>
    #include <QtCore/QDebug>
    #include "MyClass.h"
    
    void MyClass::recvData(void)
    {
        if (serial->bytesAvailable())
        {
            const QByteArray dat = serial->readAll();
            qDebug() << "已接收:" << QString::fromUtf8(dat);
        }
    }
    
    void MyClass::start(void)
    {
        serial = new QSerialPort();
        connect(serial, QSerialPort::readyRead, this, recvData);
    
        serial->setPortName("COM36");
        serial->setBaudRate(115200);
    
        if (serial->open(QIODevice::ReadWrite))
            qDebug() << "serial open OK ";
        else
            qDebug() << "serial open ERROR ";
    }
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        MyClass m;
        m.start();
    
        return app.exec();
    }
    

    MyClass.h

    #pragma once
    
    #include <QtCore/QObject>
    #include <QtSerialPort/QSerialPort>
    
    class MyClass : public QObject
    {
        Q_OBJECT
    
    public:
        MyClass() {}
        void start(void);
    
    public slots:
        void recvData(void);
    
    private:
        QSerialPort *serial;
    };
    

    demo.pro

    QT += core widgets serialport
    
    TARGET = qtdemo
    
    SOURCES += main.cpp
    
    CONFIG += console 
    
    HEADERS  += MyClass.h
    

    serialport 须通过 QApplication exec 运行, 否则槽函数无法响应。故 widgets 也是必须;

    编译运行

    mkdir build && cd build
    qmake .. && make
    

    相关文章

      网友评论

          本文标题:Qt 串口

          本文链接:https://www.haomeiwen.com/subject/ceqscdtx.html