QT串口助手(串口的查找和打开)
文章目录
- 前言
- 一、查找存在的串口将串口添加进选择框
- 二、打开串口功能的实现
- 总结
前言
本篇文章将正式的带大家实现串口的查找添加,和打开串口的功能。
一、查找存在的串口将串口添加进选择框
创建一个QList用于存储串口的信息。
QList<QSerialPortInfo> m_portList;
在帮助文档中我们看到:
使用availablePorts()这个函数可以返回当前存在的串口链表。
得到这个链表后,我们使用for循环遍历这个链表将每一个链表的名字添加进入我们创建好存放串口名字的QComBox中。
/*查找电脑当前可用串口*/
void SerialPort::FindAndAddSerialPort()
{/*返回当前存在的串口链表*/m_portList = QSerialPortInfo::availablePorts();// 遍历每个可用的串口for (int i = 0; i < m_portList.count(); i++){ui->Serialcb->addItem(QString(m_portList[i].portName()));}
}
编写好这个函数后在构造函数中调用,因为我们需要让我们的串口助手运行后就马上检测我们PC机上的串口情况然后加他添加进入QComBox中显示出来。
/*查找所有可用串口*/
FindAndAddSerialPort();
二、打开串口功能的实现
在ui文件中点击跳转到槽,这样就可以直接进入打开串口按键的槽函数了。
在打开串口之前我们需要先从QComBox中获取当前串口的配置信息:
这里需要注意的就是串口配置参数类型和QString类型之间的转换,大家看下面代码就能看明白了,这里就不多说。
/*获取串口配置参数*/
void SerialPort::GetSerialPortPara()
{m_COM = ui->Serialcb->currentText();m_Baud = QSerialPort::BaudRate(ui->Baudcb->currentText().toInt());m_databits = QSerialPort::DataBits(ui->datacb->currentText().toInt());if(ui->paritycb->currentText() == "None"){m_parity = QSerialPort::NoParity;}else if(ui->paritycb->currentText() == "Odd"){m_parity = QSerialPort::OddParity;}else if(ui->paritycb->currentText() == "Even"){m_parity = QSerialPort::EvenParity;}else if(ui->paritycb->currentText() == "Mark"){m_parity = QSerialPort::MarkParity;}else if(ui->paritycb->currentText() == "Space"){m_parity = QSerialPort::SpaceParity;}if(ui->stopcb->currentText() == "One"){m_stopbits = QSerialPort::OneStop;}else if(ui->stopcb->currentText() == "OnePointFive"){}else if(ui->stopcb->currentText() == "Two"){m_stopbits = QSerialPort::TwoStop;}
}
获取到参数信息后我们打开串口:
/*设置要打开的串口和配置对应的参数*/
bool SerialPort::OpenSerialPort(QString COM, QSerialPort::BaudRate BaudRate, QSerialPort::DataBits DataBits, QSerialPort::Parity Parity, QSerialPort::StopBits StopBits)
{bool ret = false;// 配置串口参数m_SerialPort.setPortName(COM); //设置串口号m_SerialPort.setBaudRate(BaudRate); //设置波特率m_SerialPort.setDataBits(DataBits); //设置数据位m_SerialPort.setParity(Parity); //设置校验位m_SerialPort.setStopBits(StopBits); //设置停止位// 打开串口if (m_SerialPort.open(QIODevice::ReadWrite)){qDebug() << "串口打开成功";ret = true;}else{qDebug() << "串口打开失败";ui->Statelab->setText("Open failed!");QMessageBox::warning(this, "警告", "打开串口出错,串口被占用或已拔出!");ret = false;}return ret;
}
这些都编写完成后编写打开按键槽函数:
这里主要需要注意的就是打开串口后,串口的配置是不能进行修改的所以需要把对应的控件设置为不可编辑的状态,同样的关闭串口后也需要进行对应的设置。
/*打开串口按键*/
void SerialPort::on_openbtn_clicked()
{m_open_close = !m_open_close;if(m_open_close){ /*获取串口配置参数*/GetSerialPortPara();/*打开串口*/bool ret = OpenSerialPort(m_COM, m_Baud, m_databits, m_parity, m_stopbits);if(ret){ui->Statelab->setText(ui->Serialcb->currentText()+ " " + "Opend");ui->openbtn->setText("关闭串口");}else{m_open_close = !m_open_close;}}else{m_SerialPort.close();ui->openbtn->setText("打开串口");ui->Statelab->setText(ui->Serialcb->currentText()+ " " + "Closed");}SetSerialPortPara(!m_open_close);
}
总结
本篇文章我们完成了串口的打开和查找,下一篇文章我们将完成串口的接收和发送。
QT串口助手(串口的查找和打开)相关推荐
- python串口发送数据_第六课python来写串口助手-串口发送数据
https://m.toutiaocdn.com/group/6716026491689239044/?app=news_article×tamp=1563807838&re ...
- 上位机软件-串口助手-带登陆界面
前言: 这是我在大三的时候写的一个串口助手,觉得挺好用的就分享给大家.如果有什么bug的话,希望大家多多包涵,毕竟对于C#语言我只是新手. 制作串口助手 串口助手选用Visual C#开发语言和Vis ...
- 从零开始编写一个上位机(串口助手)QT Creator + Python
提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助. 绪论:笔者这里使用的是QTCreator和Python来实现一个简单的串口上位机的开发的简 ...
- QT串口助手-ZUA课设
QT串口助手 成品展示 QT全部程序构成 zua.pro serial.h main.cpp serial.cpp serial.ui Keil全部程序构成 main.c stm32f10x_conf ...
- Qt小项目之串口助手控制LED
最近刚学了一点Qt开发上位机,尝试着做个小软件练练手.查找了很多资料,做了一个简单的串口助手,可以实现串口基本发送和接收功能,支持中文显示,还可以控制STM32开发板上的两个LED. 主要功能: 启动 ...
- 利用QT制作串口助手
前言: 在嵌入式系统中,诸多设备都可以通过串口来控制,比如WiFi.蓝牙.RFID等等,因此在嵌入式设备中使用串口就显得特别重要.在QT5中又自带了串口通信模块,所以用QT来制作串口助手相比较简单些. ...
- 从零开始编写一个上位机(串口助手)QT Creator + C++
提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助. 绪论:笔者这里使用的是QTCreator和C++来实现一个简单的串口上位机的开发的简单过程 ...
- 学习笔记:使用Qt制作一个串口调试助手
界面设计参考了野火串口调试助手C#版 功能基本实现!实现效果看图: 第一步:制作图形界面 注意控件命名要又辨识度,不然在编写代码时将是很很痛苦的 第二步:添加相应的库 添加此次工程所需要的串口库,在工 ...
- 嵌入式学习之QT学习---5 QT上位机开发之串口助手(上)
1.qt的三驾马车 qt下的串口编程 qt下的网络编程 qt下操作GPIO 2.设计ui界面 设计ui界面之前,需要新建一个QT工程,简要再回顾一下创建QT工程的步骤:new project-> ...
最新文章
- Linux那些事儿 之 戏说USB(30)驱动的生命线(二)
- mysql性能优化分析 --- 上篇
- C++调用Python函数
- Java Experiment 3 PairProgramming
- 优信php笔试题_PHP应聘笔试题
- Webstorm的常用快捷键
- Android清除本地数据缓存代码
- ipython是一个交互式计算系统_IPython :一个交互式计算和开发环境-Python
- 微服务架构与API网关
- 数据结构视频教程 -《[北风网]C#版数据结构与算法高级教程》
- 解决python中文乱码问题
- 嵌入式系统应用开发实验(三): Verilog编程使VGA图像输出
- 想做出高级又好看的PPT,这9个技巧你别错过
- h264参数动态调整
- 详解VLAN与划分广播域
- 高通APQ8009w LTR303_ALS 光感(sensor)兼容模式调试
- 一年级语文四季心田花开专项练习题
- java 计算百分数问题
- 视觉特效专家24点行业工作经验总结
- 判定图中存在回路java_图示电路中二极管为理想二极管,请判断它是否导通,并求出 u 0 。 (7.0分)_学小易找答案...