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);