QT串口通信的总结
本文为作者从实际项目中脱离出来对串口配置、读取数据的总结,仅供参考。
若有发现问题,欢迎留言补充。
转载请注明出处。
1. 在项目的.pro文件中添加依赖:
QT += serialport
2. 在mainwindow.h中引入相关头文件
#include <QMainWindow>
#include <QSerialPort>
#include <QSerialPortInfo>
3. 在mainwindow.h中,定义私有成员对象、变量
QSerialPort serial;
QString PortName;
QString temp;
4.实现步骤
1)foreach函数搜索串口名
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
PortName=info.portName();
}
2)串口配置,打开串口
serial.setPortName(PortName);
serial.setBaudRate(ui->cmb_BaudRate->currentText().toInt());
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::NoFlowControl);
if(!serial.open(QIODevice::ReadWrite))
{
QMessageBox::about(NULL, "提示", "无法打开串口!");
return;
}
else
{
QMessageBox::about(NULL, "提示", "成功打开串口!");
}
3)依据协议 写入指令
QString str(" ");
serial.write(str.toUtf8().data());
4)读取数据算法
QByteArray data = serial.readAll();
temp.append(data);
QString a1;
a1.append(temp.mid(0,xxx);
QStringList stringlist;
stringlist<<"xxxx"<<"xxxx"<<"xxxx"
if(temp.contains("\r\n"))
{
switch(stringlist.indexOf(a1))
{
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
}