天天看點

QT 序列槽通訊QSerialPort類簡單用法QSerialPort類QSerialPortInfo類

  QT序列槽程式設計用到QSerialPort類與QSerialPortInfo類。

-QSerialPort:提供通路序列槽的功能 ,讀寫操作是通過該類來實作的。

-QSerialPortInfo:提供系統中存在的序列槽的資訊,一般用于查詢目前連接配接的序列槽資訊。

QSerialPort類

使用方法

步驟1,在pro 檔案中加

    QT       += serialport  

步驟2,在頭檔案.h中加入

    #include <QtSerialPort/QSerialPort>  

    如果有用到QSerialPortInfo類,同理加頭檔案 #include <QtSerialPort/QSerialPortInfo>

步驟3,定義一個對象并且執行個體化

    QSerialPort *serial = new QSerialPort; 

步驟4,對序列槽的名稱、波特率、資料位、校驗位、停止位等參數進行設定

例如:   

    serial->setPortName(name);      //設定序列槽名  

    serial->open(QIODevice::ReadWrite);      //打開序列槽  

    serial->setBaudRate(BaudRate);      //設定波特率  

    serial->setDataBits(QSerialPort::Data8);      //設定資料位數

    serial->setParity(QSerialPort::NoParity);        //設定奇偶校驗  

    serial->setStopBits(QSerialPort::OneStop);      //設定停止位 

    serial->setFlowControl(QSerialPort::NoFlowControl);    //設定流控制  

這裡設定了序列槽名為name,打開序列槽并設定為可讀可寫,波特率為BaudRate,資料位為8位,沒有奇偶校驗位,停止位為1位,沒有流控制。

步驟5,可以進行讀寫操作

讀操作:當序列槽可讀時,會發出readyRead()的信号,需要用到槽

    connect(serial,SIGNAL(readyRead()),this,SLOT(Read_Data()));

    void MainWindow::Read_Data()  

    {  

        QByteArray buf;  

        buf = serial->readAll();  

    }  

寫操作

    serial->write(data);

可以通過傳回值來确定成功寫入/讀出的位元組數大小。

QSerialPortInfo類

用QSerialPortInfo類查找可用的序列槽的代碼實作  

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())  

    {  

        QSerialPort serial; 

        serial.setPort(info);  

        if(serial.open(QIODevice::ReadWrite))  

        {  

            ui->PortBox->addItem(serial.portName());    //這裡用一個QCombox裝住

            serial.close();  

        }  

    }

繼續閱讀