QT QSerialPort 编写串口通讯案例 设计一些基础的ui界面
因为公司需要一个串口通讯方面的一个小调试助手 以前也接触过 知道Qt5以上有自带的提供访问串口的功能QSerialPor和提供系统中存在的串口的信息QSerialPortInfo
环境配置
1.首先在工程环境pro文件里面添加
QT += core gui
2.在.cpp文件里面添加头文件
#include <QSerialPort> //提供访问串口的功能
#include <QSerialPortInfo> //提供系统中存在的串口的信息
ui设计
下图是我简易做的一个ui界面当时也只是实现了基础的通讯功能
因为公司只需要波特率 校验位 停止位这些所以在界面上我只保留了这些
QSerialPort的设置内容
QSerialPort QvsPd_c;//声明一个串口
QvsPd_c.setPortName("COM3");//设置CMO口
QvsPd_c.setBaudRate(QSerialPort::Baud9600);//设置波特率
QvsPd_c.setDataBits(QSerialPort::Data8);//设置数据位数
QvsPd_c.setParity(QSerialPort::NoParity);//设置奇偶校验
QvsPd_c.setStopBits(QSerialPort::OneStop); //设置停止位
QvsPd_c.setFlowControl(QSerialPort::NoFlowControl);//设置流控制
QvsPd_c.open(QIODevice::ReadWrite); //打开串口
代码片段
.cpp
//打开串口
void Dialogvspd::on_radioB_dakai_clicked(bool checked)
{
if(checked==true)
{
//检查串口是否可用
// QStringList slist;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
ui->lineEdit_DKH->setText(info.portName());//查询可用的串口号
qDebug()<<info.portName();
}
//设置流控制
QvsPd_c.setFlowControl(QSerialPort::NoFlowControl);
if(QvsPd_c.open(QIODevice::ReadWrite))//打开串口
{
qDebug()<<"串口读取模式";
}
else
{
qDebug()<<"串口打开异常"<<QvsPd_c.errorString();
QvsPd_c.clearError();
}
//运行之后设置ui失效
ui->lineEdit_DKH->setEnabled(false);
}
}
//关闭串口
//关闭
QvsPd_c.close();
//关闭串口后ui开启
ui->lineEdit_DKH->setEnabled(true);
.h
这里我贴一张图就可以了具体里面数据的处理我用的别的方法
自己手打 借鉴可能会出错 数据处理部分涉及别的方法!