基于QT的串口调试助手制作
目录
1、创建文件
2、串口界面制作
3、代码
4、结果
5、改进
6、百度链接
1、创建文件
创建带有ui界面的qt程序,可以点击文件-新建文件或项目就会出现上面的界面,选这Application(应用程序)创建项目,其中Qt Widgets Application是创建qt部件的应用程序,例如下面的Qt Console Application是创建控制台类型的应用,其他读者想要了解的可以创建后运行了解。
选择Qt Widgets Application-choose后,出现上述界面,修改名称和创建路径后(点击设为默认的项目路径)点击下一步,剩下的步骤直接点下一步即可。
项目创建完后,就会生成上图目录所示的文件,其中usart.pro文件是非常重要的,随意更改会出现编译出错的情况,但很多较为复杂的qt程序需要添加库文件的声明,包含路径、预处理器定义,生成目录,输出中间目录等设置,所以在不确定如何添加时可以搜索一下(注意备份,防止修改出错);mainwindow.h是主窗口的头文件,在这里可以添加自己的参数变量等;mainwindow.cpp是程序主要修改的部分;mainwindow.ui是界面编辑文件,可点击进入ui设计界面。
2、串口界面制作
串口界面的制作主要包括:
1、label标签类
2、ComboBox类
3、Plain text Edit
4、Pushbutton
5、Check Box
以上部件设计简单的串口调试助手如图:
串口的参数包括端口号、波特率、数据位、校验和停止位等,这里只选择图上这五项作为串口的主要配置,界面包括label标签类、QComboBox下拉框类、QPushButton按键类、QCheckBox单选框和QPlainTextEdit纯文本编辑类五种。端口号的下拉框可以通过程序读取到串口添加入下拉框内,其他下拉框(波特率、数据位、校验、停止位)可以在ui界面双击下拉框进行编辑。这样一个简单的串口调试的界面就完成了。
3、代码
(1)修改usart.pro文件
在usart.pro文件的如图位置插入 QT += serialport 这一句话,只有这样qt才能使用串口协议进行数据传输和接收。
(2)修改mainwindow.h文件
在mainwindow.h头文件中,添加如上几行代码,QTime和QTimer是qt中定时器的文件,QMessageBox是信息提示的文件,QSeralPort和QserialPortInfo是串口协议文件。
(3)修改mainwindow.cpp文件
mainwindow.cpp中主要包括串口的获取、串口参数设置、串口接收和发送数据处理等。
部分代码如下:(完整代码备注邮箱、qq或微信,发送百度链接)
timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(timer_serialsendandreceiveEvent()));timer->start(10);
利用定时器的timeout触发串口助手的接受事件 ,可以有效的避免数据量过大导致的阻塞问题,并且可以修改timer定时器的触发时间,更加贴合数据传输过程。
QList<QSerialPortInfo> comList = QSerialPortInfo::availablePorts();//获取可用串口列表ui->cBox_SerialPortNum->clear();//清空item,避免搜索后重复添加ui->cBox_SerialPortBaud->clear();ui->CBox_SerialPortcheck->clear();ui->cBox_SerialPortStopBit->clear();ui->cBox_SerialPortDataNum->clear();if(comList.isEmpty())//若没有可用串口,则发送警告{QMessageBox::warning(this,"Waring!","There's no avalible COM to use, plese check your serialport!");}else//将可用串口显示到comboBox上以供选择{for(int i = 0; i < comList.size(); i ++){ui->cBox_SerialPortNum->addItem(comList[i].portName());//ui->cBox_SerialPortNum->addItem(comList[i].description());//设备描述}}QStringList baudRateList = QStringList() << "1200" << "2400" << "4800"<< "9600" << "14400" << "19200" << "38400" << "43000" << "57600"<< "76800" << "115200" << "128000" << "230400" << "256000" <<"460800"<< "921600" << "1382400";QStringList parityList = QStringList() << "无" << "奇校验" << "偶校验";QStringList stopBitsList = QStringList() << "1" << "1.5" << "2";QStringList dataBitsList = QStringList() << "8" << "7" << "6" << "5";ui->cBox_SerialPortBaud->addItems(baudRateList);ui->CBox_SerialPortcheck->addItems(parityList);ui->cBox_SerialPortStopBit->addItems(stopBitsList);ui->cBox_SerialPortDataNum->addItems(dataBitsList);ui->cBox_SerialPortBaud->setCurrentIndex(10);//设置115200为默认选项
上述代码主要是获取到串口端口号并将其添加入下拉框、填充其他下拉框的内容,为后续工作做准备。
QByteArray bufferHex = str_buffer_Serial.toHex();//转换成hexbufferHex=bufferHex.toUpper();//转换成大写QString str_buffer1;if(ui->cb_rechex->isChecked())//16进制显示{str_buffer1 = QString(bufferHex);//转换成字符for(int i = str_buffer1.count(); i > 0; i = i-2){str_buffer1.insert(i," ");}}else//字符形式显示{str_buffer1 = QString(str_buffer_Serial);}if(ui->opencolse->text()=="关闭串口"){ui->SerialPortDataShow->insertPlainText(str_buffer1);ui->SerialPortDataShow->moveCursor(QTextCursor::End);}str_buffer1=ui->SerialPortDataShow->toPlainText();if(str_buffer1.size()>10000) ui->SerialPortDataShow->clear();str_buffer_Serial.clear();
//qDebug("getdata");qint64 byteLen_now = serialbasic->bytesAvailable();if(byteLen_now < 0){return;}//qDebug()<<"当前缓存长度"<<byteLen_now<<endl;buffer_Serial+=serialbasic->readAll();QByteArray bufferHex = buffer_Serial.toHex();//转换成hexbufferHex=bufferHex.toUpper();//转换成大写str_buffer_Serial+=buffer_Serial;//ui->SerialPortDataShow->append(str_buffer_Serial);//QString str_buffer = QString(buffer_Serial);QString str_buffer = QString(bufferHex);//转换成字符for(int i = str_buffer.count(); i > 0; i = i-2){str_buffer.insert(i," ");}buffer_Serial.clear();
4、结果
因为手头没有硬件作为测试,所以使用的Vspd虚拟串口+sscom串口调试助手作为调试的方案。
将两端串口的参数调整一致后,测试最终结果如图,经过一段时间的测试,效果良好,并且可以进行双向通信并转化成16进制传输 。
5、改进
由于制作时间较短,无法进行例如画图的工作,附加数据库保存数据,修改串口通信为无线通信,与下位机进行互联通信等功能,之后考虑会添加代码。有需要可以联系博主。
qq:3125201632 备注:逆流
以上成果属于个人积累,有任何不足之处还望谅解,欢迎批评指正,我们一起学习进步。有任何问题,即使跟博主联系,欢迎欢迎!
6、百度链接
(求关注!!!)
链接:https://pan.baidu.com/s/16drrESWyYx32mprD2oxevA?pwd=55xk
提取码:55xk
基于QT的串口调试助手制作相关推荐
- 基于QT的串口调试助手设计
一. 开发环境和工具 1. WIN10系统 2. QT5.4.0(C++) 二. 创建QT项目 ① 选择"Qt Widgets Application" ② 选择项目存放路径及名称 ...
- QT实现串口调试助手(七):字体设置面板创建及窗体间传值
上一篇: QT实现串口调试助手(六):页面布局 QT串口工具相关文章链接 一般串口调试工具都有修改串口接收框字体的功能面板,我们也来加一个: 1.先创建一个字体设置面板 比如我们创建一个widget, ...
- qt做串口调试助手——通信收发篇
qt实现串口调试助手 串口初始化 串口调试助手的初始化,一般包括波特率.端口号.奇偶校验.数据位和停止位.如果最终需要将串口商业化,一般这些参数都会交给用户自定义,但我们写了自己用,且上位机和下位机同 ...
- 基于qt4的串口调试助手开发
程序全部代码:https://download.csdn.net/download/haojun1996/10501590 1. 课程设计内容 本课程设计的内容是设计一个基于QT的串口调试软件,同时支 ...
- 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程
这章来学习串口数据流操作.仿照已有成品制作一个用Qt开发的串口调试助手. 介于篇幅有限,本篇只介绍一个最简单的能收发的串口调试助手的制作.后续篇幅会陆续对剩余代码进行讲解,并添加各种功能,对显示.操作 ...
- 基于Qt平台的集串口调试助手、示波器、图像显示功能于一体的上位机。
基于Qt平台的集串口调试助手.示波器.图像显示功能于一体的上位机. 可用的上位机及通信协议可在这里下载,通信协议可以很方便的移植到stm32上 链接:https://pan.baidu.com/s/1 ...
- 【Qt串口调试助手】1.0 - 400行代码撸一个Qt5串口调试助手框架
1. 设计目的 使用Qt设计一款串口调试助手,具有自动扫描串口端口.列表端口硬件信息.16进制转换.收发数目统计.定时发送等功能.代码注释清晰,应用无内建缓存区,运行效率高,适合拿来学习和作为二次开发 ...
- 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作
目录 一.简介 二.设计原理 三.系统设计 四.注意点 五.困难 一.简介 耗时五个月,终于完成了毕业设计和毕业答辩,在这里记录一下学习与实现过程. 题目是导师给的,这是主要任务和工作内容:利用M5S ...
- 8266串口调试助手_开源软件分享-基于WPF的串口调试工具
最近同事在调试硬件的串口通讯功能,由于PLC暂时还没到,所以准备用USB转串口线连接在终端上,通过电脑USB口模拟串口收发功能.一开始同事下载了一款串口调试工具,发现没有自定义功能,比如通讯串口收到终 ...
最新文章
- SPOJ AMR10I Dividing Stones --DFS
- SAP模块常用增强总结
- 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
- Hystrix指标窗口实现原理
- FreeRTOS(三)——资源管理
- QT绘制具有向下钻取效果的园饼图
- 简单的docker-compose编写介绍(包含 nginx+tomcat 实例演示)
- python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
- ssm框架整合_框架整合战斗压缩粮篇SpringCloud+SpringBoot+SSM
- 那年学过的Quartz框架笔记
- 拒绝空谈 AI 设想!手把手教你构建实时、高可用的 AI 调度平台
- iOS 协议 委托 代理 delegate
- linux系统下memcached启动正常但程序无法连接的问题解决
- 一层交换 二层交换 三层交换 四层交换 七层交换 OSI参考模型
- 缓存着色技术(Cache Coloring)
- 解决Ubuntu环境搜狗拼音候选区乱码问题
- 02块级标签和内联标签的区别
- c语言异形图片,“异形”二字描述了他的一生
- vmware虚拟机网络配置详解
热门文章
- Android 开发飞机大战
- 卡蜜使用php,卡蜜尔360°全揭秘,分段越高胜率越高
- CIO要顶住词汇爆炸的冲击(转)
- python 今日头条 微头条_今日头条的入门,其实就是‘微头条’
- 逆战之总结常见的react组件
- 浅谈Python+requests+pytest接口自动化测试框架的搭建
- Android 自定义RatingBar实现
- 替换word中英文““为中文双引号“”,且保持西文为Time NewRome
- UML类图和时序图绘图工具
- 那些年我们写过的文案