怎么在Qt中使用QSerialPort模块实现串口通信开发

  介绍

怎么在Qt中使用QSerialPort模块实现串口通信开发?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

首先,一定要在。箴文件中添加:<代码> QT +=串口

串口初始化如下:

/* * * * * * * * * * * * * * * * * * * * * * * * * * * *串口初始化* * * * * * * * * * * * * * * * * * * * * * * * * * * * */,   void 主窗口::initPort (),   {,   ,//读取串口信息,   ,foreach  (const  QSerialPortInfo 及信息,,QSerialPortInfo:: availablePorts ()),   {大敌;   qDebug才能()& lt; & lt;“名称:“& lt; & lt; info.portName (),,   qDebug才能()& lt; & lt;“描述:“& lt; & lt; info.description (),,   qDebug才能()& lt; & lt;“制造商:“& lt; & lt; info.manufacturer (),,   ,//这才能里相当于自动识别串口号之后添加到了招商银行,如果要手动选择可以用下面列表的方式添加进去,   ,,QSerialPort 串行;   serial.setPort才能(信息),,   如果才能(serial.open (QIODevice::读写)),   ,{大敌;   ,,//将串口号添加到cmb    ,,ui→cmbPortName→addItem (info.portName ()),,   ,,//关闭串口等待人为(打开串口按钮)打开,   ,,serial.close (),,   ,,},   }大敌;   ,   ,QStringList  baudList;//波特率,   ,QStringList  parityList;//校验位,   ,QStringList  dataBitsList;//数据位,   ,QStringList  stopBitsList;//停止位,   ,   ,baudList<& lt;“50“& lt; & lt;“75“& lt; & lt;“100“& lt; & lt;“134“& lt; & lt;“150“& lt; & lt;“200“& lt; & lt;“300“,   ,,& lt; & lt;“600“& lt; & lt;“1200“& lt; & lt;“1800“& lt; & lt;“2400“& lt; & lt;“4800“& lt; & lt;“9600“,   ,,& lt; & lt;“14400“& lt; & lt;“19200“& lt; & lt;“38400“& lt; & lt;“56000“& lt; & lt;“57600“,   ,,& lt; & lt;“76800“& lt; & lt;“115200“& lt; & lt;“128000“& lt; & lt;“256000“,   ,   ,ui→cmbBaudRate→additem (baudList);,   ,ui→cmbBaudRate→setCurrentIndex (12),,   ,   ,parityList<& lt;“无“& lt; & lt;“奇“& lt; & lt;“偶“,   ,parityList<& lt;“标志“,,   ,parityList<& lt;“空格,,,   ,   ,ui→cmbParity→additem (parityList);,   ,ui→cmbParity→setCurrentIndex (0),,   ,   ,dataBitsList<& lt;“5“& lt; & lt;“6“& lt; & lt;“7“& lt; & lt;“8“,   ,ui→cmbDataBits→additem (dataBitsList);,   ,ui→cmbDataBits→setCurrentIndex; (3),   ,   ,stopBitsList<& lt;“1“,   ,stopBitsList<& lt;“1.5“,   ,stopBitsList<& lt;“2“,   ,   ,ui→cmbStopBits→additem (stopBitsList);,   ,ui→cmbStopBits→setCurrentIndex (0),,   ,   ,//设置按钮可以被按下,   ,ui→btnOpen→setCheckable(真正的),,   }

这里通过遍历所有串口将我们需要使用的串口添加到了combox中,如果想要手动选择可以将串口名称通过列表的方式添加到combox中,到使用的时候再选择。

串口设置如下:

/* * * * * * * * * * * * * * * * * * * * * * * * * * * *串口设置* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */,   void 主窗口::on_btnOpen_clicked (),   {,   ,如果(ui→btnOpen→文本(),==,“打开串口“),   {大敌;   my_serialport 才能=,new  QSerialPort(这个),,   ,//才能设置串口号,   my_serialport→才能setPortName (ui→cmbPortName→currentText ()),,//以才能读写方式打开串口,   如果才能(my_serialport→打开(QIODevice::读写)),   ,{大敌;   ,,//设置波特率,   ,,my_serialport→setBaudRate (ui→cmbBaudRate→currentText () .toInt ()),,   ,,//设置数据位,   ,,my_serialport→setDataBits (QSerialPort:: Data8);,   ,,//设置校验位,   ,,my_serialport→setParity (QSerialPort:: NoParity);,   ,,//设置流控制,   ,,my_serialport→setFlowControl (QSerialPort:: NoFlowControl);,   ,,//设置停止位,   ,,my_serialport→setStopBits (QSerialPort::万仕达);,   ,   ,,//每秒读一次,   ,,timer =, new  QTimer(这);,   ,,连接(计时器,信号(超时()),,,,槽(readComDataSlot ())),,   ,,计时器→开始(1000年),,   ,   ,,setNonSelectable (),,   ,,},   else 才能;   ,{大敌;   ,,QMessageBox:关于(NULL,,“提示“,,“串口没有打开!“),,   ,,,返回;   ,,},   }大敌;   ,else    {大敌;   计时器→才能停止(),,   setSelectable才能(),,   my_serialport才能→close (),,   }大敌;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Qt中使用QSerialPort模块实现串口通信开发