­

QT串口通訊

QT中串口通訊需要使用到QSerialPort類,需要在pro文件中添加 Qt += serialport 才能夠正常使用

頭文件中添加#include <QSerialPort>

 

寫在前面

  相關內容僅供參考,如有雷同,不勝榮幸,以下內容僅為自己工作中遇到的,很片面與簡單,許多內容都不全,歡迎批評指正交流,相互學習成長,在此感謝。

 

一般需要使用到QSerialPort類的函數:

  void setPortName();   ///< 設置埠號

  bool setBaudRate();  ///< 設置波特率

  bool setDataBits();   ///< 設置數據位

  bool setStopBits();   ///< 設置停止位

  bool setParity();    ///< 設置校驗位

  bool setFlowControl(); ///< 設置流控制

 

相關函數參數說明:

        波特率函數參數類型 QSerialPort::BaudRate

       數據位函數參數類型 QSerialPort::DataBits

        停止位函數參數類型 QSerialPort::StopBits

        校驗位函數參數類型 QSerialPort::Parity

        流控制函數參數類型 QSerialPort::FlowControl

      (相關內容在Qt頭文件中和幫助文檔中都有描述,此處不多做解釋.)

 

獲取其他資訊方式

        獲取當前機器可用串口

          QList<QSerialPortInfo> portInfos = QSerialPortInfo::availblePorts();

 

打開串口

  設置打開串口需要設置的內容

            m_serialPort->setPortName();

                m_serialPort->setBaudRate();

                m_serialPort->setDataBits();

                m_serialPort->setStopBits();

                m_serialPort->setParity();

                m_serialPort->setFlowControl();

                if( !m_serialPort->open(QIODevice::ReadWrite))

                          return false;

          讀取串口內容

                 QByteArray n_byteArray = m_serialPort->readAll();

                  /// 解析讀取得內容

          關閉串口

                 m_serialPort->flush();

     m_serialPort->close();

 

 其他

    如果需要實時得從串口讀取內容,則應該使用QSerialPort::readyRead().

     通過鏈接當前訊號,即可實時的從串口中獲取資訊.

     例: connect(m_serialPort,  &QSerialPort::readyRead,  this,  &GetSerialPortInfo::slotSerialPortReadyRead);