介绍
怎么在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模块实现串口通信开发