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