目录

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的串口调试助手制作相关推荐

  1. 基于QT的串口调试助手设计

    一. 开发环境和工具 1. WIN10系统 2. QT5.4.0(C++) 二. 创建QT项目 ① 选择"Qt Widgets Application" ② 选择项目存放路径及名称 ...

  2. QT实现串口调试助手(七):字体设置面板创建及窗体间传值

    上一篇: QT实现串口调试助手(六):页面布局 QT串口工具相关文章链接 一般串口调试工具都有修改串口接收框字体的功能面板,我们也来加一个: 1.先创建一个字体设置面板 比如我们创建一个widget, ...

  3. qt做串口调试助手——通信收发篇

    qt实现串口调试助手 串口初始化 串口调试助手的初始化,一般包括波特率.端口号.奇偶校验.数据位和停止位.如果最终需要将串口商业化,一般这些参数都会交给用户自定义,但我们写了自己用,且上位机和下位机同 ...

  4. 基于qt4的串口调试助手开发

    程序全部代码:https://download.csdn.net/download/haojun1996/10501590 1. 课程设计内容 本课程设计的内容是设计一个基于QT的串口调试软件,同时支 ...

  5. 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

    这章来学习串口数据流操作.仿照已有成品制作一个用Qt开发的串口调试助手. 介于篇幅有限,本篇只介绍一个最简单的能收发的串口调试助手的制作.后续篇幅会陆续对剩余代码进行讲解,并添加各种功能,对显示.操作 ...

  6. 基于Qt平台的集串口调试助手、示波器、图像显示功能于一体的上位机。

    基于Qt平台的集串口调试助手.示波器.图像显示功能于一体的上位机. 可用的上位机及通信协议可在这里下载,通信协议可以很方便的移植到stm32上 链接:https://pan.baidu.com/s/1 ...

  7. 【Qt串口调试助手】1.0 - 400行代码撸一个Qt5串口调试助手框架

    1. 设计目的 使用Qt设计一款串口调试助手,具有自动扫描串口端口.列表端口硬件信息.16进制转换.收发数目统计.定时发送等功能.代码注释清晰,应用无内建缓存区,运行效率高,适合拿来学习和作为二次开发 ...

  8. 【毕业设计】基于M5Stack UnitV2的手写识别计算器的设计与制作

    目录 一.简介 二.设计原理 三.系统设计 四.注意点 五.困难 一.简介 耗时五个月,终于完成了毕业设计和毕业答辩,在这里记录一下学习与实现过程. 题目是导师给的,这是主要任务和工作内容:利用M5S ...

  9. 8266串口调试助手_开源软件分享-基于WPF的串口调试工具

    最近同事在调试硬件的串口通讯功能,由于PLC暂时还没到,所以准备用USB转串口线连接在终端上,通过电脑USB口模拟串口收发功能.一开始同事下载了一款串口调试工具,发现没有自定义功能,比如通讯串口收到终 ...

最新文章

  1. SPOJ AMR10I Dividing Stones --DFS
  2. SAP模块常用增强总结
  3. 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
  4. Hystrix指标窗口实现原理
  5. FreeRTOS(三)——资源管理
  6. QT绘制具有向下钻取效果的园饼图
  7. 简单的docker-compose编写介绍(包含 nginx+tomcat 实例演示)
  8. python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
  9. Hibernate 系列 02 - Hibernate介绍及其环境搭建
  10. ssm框架整合_框架整合战斗压缩粮篇SpringCloud+SpringBoot+SSM
  11. 那年学过的Quartz框架笔记
  12. 拒绝空谈 AI 设想!手把手教你构建实时、高可用的 AI 调度平台
  13. iOS 协议 委托 代理 delegate
  14. linux系统下memcached启动正常但程序无法连接的问题解决
  15. 一层交换 二层交换 三层交换 四层交换 七层交换 OSI参考模型
  16. 缓存着色技术(Cache Coloring)
  17. 解决Ubuntu环境搜狗拼音候选区乱码问题
  18. 02块级标签和内联标签的区别
  19. c语言异形图片,“异形”二字描述了他的一生
  20. vmware虚拟机网络配置详解

热门文章

  1. Android 开发飞机大战
  2. 卡蜜使用php,卡蜜尔360°全揭秘,分段越高胜率越高
  3. CIO要顶住词汇爆炸的冲击(转)
  4. python 今日头条 微头条_今日头条的入门,其实就是‘微头条’
  5. 逆战之总结常见的react组件
  6. 浅谈Python+requests+pytest接口自动化测试框架的搭建
  7. Android 自定义RatingBar实现
  8. 替换word中英文““为中文双引号“”,且保持西文为Time NewRome
  9. UML类图和时序图绘图工具
  10. 那些年我们写过的文案