QT4用qextserialport擴展連接串口

QT4裏不像Qt5自帶串口擴展那麼方便,但是嵌入式開發或者想支持很舊的Linux操作系統時就需要Qt4,畢竟Qt4輕量級啊。
引入qextserialport擴展的方法比引入QJson擴展方便多了,從:https://github.com/qextserialport/qextserialport可以下載到最新源碼,可以支持Linux下也支持異步信號的方式,即QextSerialPort::EventDriven。
下載後,解壓縮,目錄src更名爲qextserialport,然後拷貝到項目中。修改項目文件增加一句include(qextserialport/qextserialport.pri)就可以使用了。

用法示例:

#include "qextserialport.h"
...
    QextSerialPort *port = new QextSerialPort();
    connect(port, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
    connect(port, SIGNAL(bytesWritten(qint64)), this, SLOT(onBytesWritten(qint64)));
    connect(port, SIGNAL(dsrChanged(bool)), this, SLOT(onDsrChanged(bool)));
...
    port->setPortName(name);
    port->setBaudRate(port_baudrate);
    port->setFlowControl(FLOW_OFF);
    port->setParity(party_type);
    port->setDataBits(port_start_bit);
    port->setStopBits(port_stop_bit);
    if (!port->open(QIODevice::ReadWrite)) {
        qDebug() << "串口打開失敗:" << errorString();
        return false;
    } else {
        if (!(lineStatus() & LS_DSR)) {
            qDebug() << "警告: 設備尚未準備好,請稍後再寫入數據";
        } else {
            qDebug() << "開始監聽串口:" << portName();
        }
        return true;
    }
...
QString data = "hello";
write(data.toStdString().c_str(), data.size());

QByteArray buf;
buf.append(data);
port->write(buf);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章