QT串口助手入门到精通

系列文章目录

QT串口助手入门到精通


QT串口助手入门到精通

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、创建第一个QT程序

1.1Location(项目简介和位置)

创建QT项目过程中不能有中文或者空格,可以有下划线,有的话程序不报错,但是窗口显示不出来

QT串口助手入门到精通_第1张图片


1.2Kits(构建套件)

  1. QT可以开发安卓的,可以选择开发安卓的环境
  2. 可以自由选择不同版本进行开发,比如自己的版本低,可以选择高版本的环境进行开发
    QT串口助手入门到精通_第2张图片

1.3Details(类的信息)

创建QT项目的时候都会让你创建一个类,这个类是主窗口的类
第二个窗口是基类,基类有三种选择

  1. Qwidget 创建出来就是一个大窗口
  2. QMainWindow 创建出来比1多个菜单栏、工具栏、状态栏
  3. QDialog 创建出来比1多个对话框(安装软件下一步那个就是对话框)

三种选择
Qwidget 是QMainWindow和QDialog的父类

QT串口助手入门到精通_第3张图片类名可以用默认的也可以换成自己想用的
比如我换成myWidget,widget可以理解成窗口的意思
创建界面,选择上,后面就有个设计界面,可以拖出里面的框架

QT串口助手入门到精通_第4张图片


1.4汇总

添加到版本信息里面是空的,以后QT开发是团队开发,需要用到版本控制系统(避免团队写的代买冲突),比如git svn vss(用的少)

QT串口助手入门到精通_第5张图片


二、常用操作

2.1显示文件分类

里面有文件的分类,如果不喜欢文件分类可以点开所框的图形,简化树形图,就消失了文件的分类
QT串口助手入门到精通_第6张图片


2.2代码分栏

可以选择左右分栏和上下分栏,选择后再点下就删掉了,你可以左边写你的代码,后边代码参考别人的源码

QT串口助手入门到精通_第7张图片


三、代码分析

QT串口助手入门到精通_第8张图片


四、总结

QT是个跨平台图形界面引擎
优点:

  • 跨平台
  • 接口简单,易上手
  • 一定程度下简化了内存的回收

版本:分为开源版和商业版本

成功案列:

  • linux桌面环境KDE
  • 谷歌地图
  • VLC多媒体播放器

创建第一个QT程序
点击创建项目后,选择项目路径以及给项目起名称
名称–不能有中文不能有空格**
路径–不能有中文路径
默认创建有窗口类,mvWidget,基类有三种选择:QWidget、QMainWindow、aDialogw
main 函数
QApplication a应用程序对象,有且仅有一个
myWidget w;实例化窗口对象
w.show()调用show 函数显示窗口
return a.exec()让应用程序对象进入消息循环机制中,代码阻塞到当前行(避免窗口一闪而过)


END

系列文章目录

QT文件以及命名规范和快捷键


QT项目文件

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、.pro文件

上面显示你创建的时间
QT串口助手入门到精通_第9张图片
TARGET(生产目标.exe程序)
点击Explorer中显示后,出现这个目录


上一级目录,里面有build文件,build文件里面有个debug,debug里面有.exe程序

QT串口助手入门到精通_第10张图片QT串口助手入门到精通_第11张图片QT串口助手入门到精通_第12张图片
QT串口助手入门到精通_第13张图片
更换TARGET生成的目标文件后会新建一个.exe的程序
想更换你的程序名就从这里修改
QT串口助手入门到精通_第14张图片


二、.h文件(头文件)

QT串口助手入门到精通_第15张图片
析构函数可以理解释放掉改函数

QT串口助手入门到精通_第16张图片


三、 .cpp文件(源文件)及命名规范

主要写的是命名规范

ctrl + alt 点击函数可以跳转到该函数

QT串口助手入门到精通_第17张图片


帮助文档界面
QT串口助手入门到精通_第18张图片


END

系列文章目录

QT串口助手开发文章1


QT串口助手开发文章1

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、UI设计

首先需要创建QT程序
创建QT程序的时候,记得点下创建页面,基类选择成Dialog,点击Forms文件夹下面的ui文件便可以绘制ui图形了

1.1combo Box(下拉框)

1.1.1下拉框固定用法(ui方式)

在页面绘制一个combo Box,ctrl + r(快捷键)运行
需要学习快捷键用法参考博客

发现这个下拉框选择不了子选项,因为没有添加子选项
QT串口助手入门到精通_第19张图片

关掉运行的结果,双击下拉框,便可以编辑下拉框了

QT串口助手入门到精通_第20张图片

点击加号按钮就可以给下拉框添加子选项了,添加完点击ok

QT串口助手入门到精通_第21张图片
再次运行ctrl + r,下拉框就可以选择子选项了

QT串口助手入门到精通_第22张图片

这种方式不灵活添加完后,只能有你设置的固定选项


1.1.1下拉框代码方式

代码方式是灵活动态调整Com box(下拉框)
点击下拉框,红框标出的是Objectname就是控件(Combo box就是控件之一)的名字也就是控件的ID,可以更改它的命名为CboxSerialPort(直接编辑值就可以了)
QT串口助手入门到精通_第23张图片
QT串口助手入门到精通_第24张图片
该列表框属于ui的一部分,所以可以更改.cpp文件即通过代码方式来灵活设置下拉框的子选项
CBoxSerialPort是之前设置的Combo box
addItem是增加子选项
QT串口助手入门到精通_第25张图片
出现c++承载,函数名相同,函数的参数不同(在同一个函数名下面实现不同的效果功能),输入不同的参数会调用对应参数的函数

第一个函数的参数Qstring(字符串),把字符串增加进去作为子选项
等于号是默认参数的意思
比如在这里只传一个参数,COM0,后面的参数就默认等于后面函数自带第二个参数的默认值

QT串口助手入门到精通_第26张图片
第二个函数参数icon是图标+字符串一起增加子选项

QT串口助手入门到精通_第27张图片我们使用第一个函数,ctrl + b 编译然后ctrl + r运行下看效果
QT串口助手入门到精通_第28张图片

运行效果,5678也有了,证明这样的方法是直接增加没有覆盖掉之前的ui方式添加的端口

QT串口助手入门到精通_第29张图片


二、响应combo box

点击了COM1,怎么知道我点击的是COM1
如:
按钮的响应(push button)
点击右键转到槽,里面有个clicked参数,clicked是个信号,当点击这个按钮的时候,clicked信号发出,对应槽函数响应该信号,从而完成对应的动作,比如关闭对话框
QT串口助手入门到精通_第30张图片QT串口助手入门到精通_第31张图片

QT串口助手入门到精通_第32张图片记得把pushbutton再右键删掉


同理combo box
右键点击我们之前创建的combo box 转到槽,选择currentIndexChanged(qstring)(我们用的串口助手,选择不同端口就会修改索引,由于端口是字符串所以选择这个我红框所框的)
点击ok直接切换到dialog.cpp文件中对应的槽函数
QT串口助手入门到精通_第33张图片QT串口助手入门到精通_第34张图片
参数&argl就是currentIndexChanged所携带的参数就是串口号(字符串)

展示该字符串需要在ui里面加入一个label用来显示我们刚才选择的串口号,并且直接点击label修改为待选,修改其id名
QT串口助手入门到精通_第35张图片set text设置标签,标签是arg1(串口号),然后编译ctrl +b 运行ctrl +r

QT串口助手入门到精通_第36张图片
运行效果

QT串口助手入门到精通_第37张图片
点击COM1标签变为COM1,当我们点击COM1的时候,发出信号,这个信号是currentIndexChanged当前索引被修改,并且该信号会携带字符串,这个字符串就是你选择的COM1,从槽传进去,COM1传进去,设置标签显示
QT串口助手入门到精通_第38张图片

三、串口的使用

点击帮助文档找QSerialPort,就显示QserialPort这个类,里面很多函数,我们只需要设置端口号,所以找set函数,设置端口名,数据位,波特率,校验位,停止位
QT串口助手入门到精通_第39张图片

QT串口助手入门到精通_第40张图片下一节书写串口的具体写法


END

系列文章目录

QT串口助手文章2书接上文


QT串口助手文章2

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、串口的使用

1.1串口环境配置

根据文章一最后的帮助文档
我们需要给.pro文件添加功能模块和.h文件要加进去头文件才能使用端口功能

QT串口助手入门到精通_第41张图片
QT串口助手入门到精通_第42张图片


1.2添加串口到实例

加实例,在对话框private私有成员加实例
习惯类内成员以m开头
mSerialPort 是 QSerialPort(类)的实例(对象)
QT串口助手入门到精通_第43张图片


二、设置串口功能

2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能

按下F4到.cpp文件中
设置端口号,波特率功能
上面的是界面COM5…9(ui->CBoxSerialPort->addItem(“COM5”)
下面的是端口功能(mSerialPort.setPortName(“COM1”);)
QT串口助手入门到精通_第44张图片同理设置校验位,数据位,停止位功能
QT串口助手入门到精通_第45张图片
设置打开功能模式只支持读 读写 只读
QT串口助手入门到精通_第46张图片


2.2验证打开模式功能

为了验证你的open函数是否打开

2.2.1 通过手动方式打开

点击我的电脑右键,打开管理
QT串口助手入门到精通_第47张图片

点开设备管理器,串口COM1存在


2.2.2写函数判断(使用isopen()函数判断)

如果打开成功,QDebug输出串口打开成功!调用了QDebug所以文件要加入#inclue

QT串口助手入门到精通_第48张图片QT串口助手入门到精通_第49张图片


2.3测试打开功能

测试效果
编译ctrl+b运行ctrl+r
测试成功

QT串口助手入门到精通_第50张图片


2.4串口的发送功能

一切皆文件,物理设备同理,所以串口(设备)也有写的函数
串口的发送功能
可以看到write有三个承载函数,用第一个函数
QT串口助手入门到精通_第51张图片


2.4.1测试串口发送功能

给串口发送hello world!字符串,测试效果,编译ctrl +b 运行ctrl +r

QT串口助手入门到精通_第52张图片
没有效果,测试失败
QT串口助手入门到精通_第53张图片


2.5下载虚拟串口和串口助手再次测试串口发送功能

这个时候需要用到虚拟串口了,建议读者自行下载虚拟串口和串口助手来测试功能

虚拟串口,一个发送数据,一个接受数据
可以看到我们COM1和COM2是一对串口,所以我们在COM1写入的数据,COM2能读取到,用到串口助手调到COM2,COM1发送的hello world,COM2便能读取到

QT串口助手入门到精通_第54张图片
打开串口助手端口号设置成COM2
编译运行我们刚才的程序ctrl+b ctrl + r
可以看到串口助手收到数据hello world
测试成功

QT串口助手入门到精通_第55张图片


END

系列文章目录

QT串口助手开发1之绘制界面


QT串口助手开发1

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、QT串口助手开发

1.1创建QT程序

首先需要创建QT程序
创建QT程序的时候,记得点下创建页面,基类选择成Dialog
创建好QT程序后,编译ctrl + b ,运行ctrl + r ,弹出窗口


1.2更改窗口名字

更改窗口名字变成串口调试助手,更改windowTitle即可更改成窗口名字
在这里插入图片描述


1.3绘制串口助手页面

选中Combo Box 和 Label(标签),复制成5份
Combo Box的用法

在这里插入图片描述


1.3.1水平布局

绘制页面对齐很花费时间,第一行是水平没对齐,使用快捷方法对齐
选中该行,点击该按钮(水平布局),便可以水平对齐了
这个时候着两个控件就变成一个整体了,可以一个整体的拖动
在这里插入图片描述
ctrl + r 运行下看下效果,红色框是提醒水平布局的框,不会出现在运行里面
在这里插入图片描述


1.3.2垂直布局

在这里插入图片描述在这里插入图片描述ctrl + r运行测试下效果

在这里插入图片描述可以拖拉,达到你想要的效果

在这里插入图片描述

ctrl + r 运行下效果
在这里插入图片描述


1.4绘制打开发送按钮

需要用到2个push button控件,让其垂直布局,ctrl + r 运行下

在这里插入图片描述
这样绘制出来不好看,可以选中这两个控件,ctrl + z 撤销
添加Vertical Spacer(涨位符),撑开一部分空间,这样可以让两个按钮隔开更宽的距离
在这里插入图片描述
ctrl + r运行测试下效果

在这里插入图片描述
在添加一个Vertical Spacer在按钮和选择框之间,更加美观

在这里插入图片描述ctrl + r 运行下效果

在这里插入图片描述


1.5绘制接收数据文本框和发送数据文本框

Line Edit行文本框,太小了(只有一行),用Text Edit 或者Plain Edit,我两个都是用的Text Edit
两个Text Edit垂直布局,则会一样大
在这里插入图片描述
我们需要一个大一个小(接收界面大,发送界面小)
SizePolicy尺寸策略,两个Text Edit垂直伸展系数都相同
在这里插入图片描述

里面更改垂直伸展系统再垂直伸展的时候,就可以实现一大一小的效果了

在这里插入图片描述
大概6:1的效果最好看,所以我调制垂直伸展系数为6:1,效果如下

在这里插入图片描述
再添加下占位符,更加美观

在这里插入图片描述
ctrl + r 运行测试下效果

在这里插入图片描述

为了更加美观,再添加一个水平占位符,整体做水平布局,并且鼠标拖拉下达到美观即可

在这里插入图片描述

并ctrl + r 运行查看效果,读者觉得不美观也可以自行更改下

在这里插入图片描述


END

系列文章目录

QT串口助手开发2之串口程序编写


QT串口助手开发2

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、前期准备工作

1.1给选择框添加子选项

书接上文
绘制好界面后,需要给每个控制命个名,再继续编写串口程序
直接对label直接更改标签名字即可同理pushbutton
设置选项框里面的子选项,设置波特率,串口号用程序的方式动态识别
设置方式见设置选项框的方法
在这里插入图片描述
同理校验位,数据位,停止位

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


1.2给控件命名ID

点击串口号后面的Combo Box 控件给其ID为cboxSerialPort
同理波特率更名为CboxBaudrate
校验位更名为CboxParity
数据位更名为CboxDataBits
停止位更名为CboxStopBits
pushbutton更名为打开和发送
Text Edit命名为TeditRecv、TeditSend
在这里插入图片描述
ctrl + r运行看下效果,如果觉得不是很好看,就在SizePolicy调整策略
在这里插入图片描述


二、自动识别系统端口程序

自动识别当前系统有效的端口,让你选择(在串口号那栏有子选项可以选择)
去帮助文档查看帮助文档查看方法
首先需要给头文件加功能模块可参考文档
在这里插入图片描述在这里插入图片描述

QList列表里的每个成员都是SerialPortInfo,其实这个表就是有效端口的列表
类内的静态成员,可以直接通过类来调用不需要对象,直接调用就是两个::
availablePorts()这个函数返回一个列表到serialportInfo
接下来遍历这个列表,把列表里面的内容填到串口号后面的combo box里面去
帮助文档查看QList(列表或者数组)如何使用当作一个数组访问
在for循环里面,返回一个数组下标,at返回一个串口的信息
最详细写法参考参考写法

ctrl + r运行测试效果
在这里插入图片描述
测试成功,再添加2个模拟串口测试

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
ctrl + r 运行,测试成功
在这里插入图片描述


三、响应打开函数

参考文章添加链接描述
右键点击打开按钮转到槽

在这里插入图片描述
当打开按钮按下后,其余比如波特率…等等这些就不能在选择子选择,按钮就变成断开按钮类似这样
在这里插入图片描述m开头是类内成员
在这里插入图片描述在这里插入图片描述

写个函数,alt + enter 鼠标放在写的函数上,选择添加一个定义,界面就跳转了
这样就可以不用直自己写一个函数

在这里插入图片描述
我们要获取5个配置

在这里插入图片描述
并且设置进去(转到头文件)
在这里插入图片描述

再写其类内的成员
在这里插入图片描述
写.cpp文件
默认情况就是115200,你没选择波特率就是115200,以免没设置波特率

在这里插入图片描述同理写其它位
校验位只写三种去除两种,太麻烦了(在ui界面也去掉)
这两种去掉
在这里插入图片描述
写.cpp文件
在这里插入图片描述

同理其它位

在这里插入图片描述

停止位:

在这里插入图片描述
写完后要返回open的结果

小灯泡是修改该函数类型后,.h文件也要更改(函数的声明),点下小灯泡跳转到.h文件并且自动帮你更改
.cpp是函数的实现
在这里插入图片描述
更变成功

在这里插入图片描述

在构造函数中初始化下mIsOpen,默认情况下是关闭
open按钮的槽函数可以响应open单击的动作
点击打开这个按钮后,调用getSerialPortConfig函数,当这个函数返回true说明这个串口打开成功,否则打开失败,这个时候才能设置mIsOpen成员true or false(这个时候才是真正打开串口或者没打开串口)
但是我们打开串口按钮打开后只能选择关闭串口,所以这个是循环的过程,下文再书写如何编写串口程序,该问题留给下文

在这里插入图片描述


END

系列文章目录

QT串口助手开发3串口开发


QT串口助手开发3

  • 系列文章目录
  • 一、创建第一个QT程序
    • 1.1Location(项目简介和位置)
    • 1.2Kits(构建套件)
    • 1.3Details(类的信息)
    • 1.4汇总
  • 二、常用操作
    • 2.1显示文件分类
    • 2.2代码分栏
  • 三、代码分析
  • 四、总结
  • 系列文章目录
  • 一、.pro文件
  • 二、.h文件(头文件)
  • 三、 .cpp文件(源文件)及命名规范
  • 系列文章目录
  • 一、UI设计
  • 1.1combo Box(下拉框)
    • 1.1.1下拉框固定用法(ui方式)
    • 1.1.1下拉框代码方式
  • 二、响应combo box
  • 三、串口的使用
  • 系列文章目录
  • 一、串口的使用
    • 1.1串口环境配置
    • 1.2添加串口到实例
  • 二、设置串口功能
    • 2.1设置端口号、波特率、校验位,数据位,停止位功能、打开功能
    • 2.2验证打开模式功能
      • 2.2.1 通过手动方式打开
      • 2.2.2写函数判断(使用isopen()函数判断)
    • 2.3测试打开功能
    • 2.4串口的发送功能
      • 2.4.1测试串口发送功能
    • 2.5下载虚拟串口和串口助手再次测试串口发送功能
  • 系列文章目录
  • 一、QT串口助手开发
    • 1.1创建QT程序
    • 1.2更改窗口名字
    • 1.3绘制串口助手页面
      • 1.3.1水平布局
      • 1.3.2垂直布局
    • 1.4绘制打开发送按钮
    • 1.5绘制接收数据文本框和发送数据文本框
  • 系列文章目录
  • 一、前期准备工作
    • 1.1给选择框添加子选项
    • 1.2给控件命名ID
  • 二、自动识别系统端口程序
  • 三、响应打开函数
  • 系列文章目录
  • 一、UI界面程序的编写
  • 二、发送框程序编写


一、UI界面程序的编写

根据上文的未解决问题:我们打开串口按钮打开后只能选择关闭串口,所以这个是循环的过程
上文链接
所以按钮对应的槽函数首先必须判断当前串口助手是否打开了助手,closed以后要把按钮的状态恢复成打开,修改mIsOpen标志位为False

在这里插入图片描述

否则执行我们写的getSerialPortConfig获取位(数据位…)成功,按钮状态是打开,并且按钮要更新为关闭(并且位的下拉框要变成灰白色不再可以调位下拉框了),如果没有获取成功则按钮状态是关闭的
在这里插入图片描述

禁止使用下拉框就成灰白色了

在这里插入图片描述

代码如下:

在这里插入图片描述

测试下信息,加个QDebug头信息

在这里插入图片描述在这里插入图片描述

ctrl + r运行测试效果

在这里插入图片描述在这里插入图片描述

我们需要打开按钮打开后才能点击发送按钮

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其实还可以直接把mIsopen填进去这样就不用思考填true或者false

在这里插入图片描述在这里插入图片描述在这里插入图片描述
ctrl + r 运行测试效果
当你没有打开串口的时候发送按钮是灰色的(不能发送),当你打开串口的时候,发送按钮是可以发送的
在这里插入图片描述在这里插入图片描述

二、发送框程序编写

发送按钮转到槽函数,详情槽函数可以参考文章槽函数

在这里插入图片描述
在这里插入图片描述比如TeditSend函数不会用,就再帮助文档查TeditSend函数,帮助文档使用方法参考文档添加链接描述

由于这个toPlainText()这个函数是Qstring类型,所以我们需要变更下它的函数类型为char*,再帮助文档中查看Qstring函数的用法
在这里插入图片描述Qstring先转换成标准的c++string,然后再用c_str转换成char*
ctrl + r 运行测试下效果
在这里插入图片描述
同理写接受框,COM2给COM1发送数据时,这时接收框没有反应
在这里插入图片描述
接收框程序写法:
平常都是再ui转到槽函数,这个是从设计界面,如果我们连接到串口,需要用代码的方式连接
connect是连接信号和槽,信号发送者是mSerialPort,发送信号Readyread,发送给槽(先自定义下)的槽
slots槽函数
在这里插入图片描述
ALT + ENTER选择添加定义
在这里插入图片描述
在这里插入图片描述

再写槽函数里面读取串口
当串口有数据的时候,就会发送ReadyRead这个信号,槽函数就会响应,就会读取串口,然后设置到接收文本框里面

在这里插入图片描述ctrl + b编译ctrl + r测试下效果
在这里插入图片描述一直发送都是一个hhh
因为我们之前设置的槽函数,一旦有数据就会读取并且发送到接收框,这样每次发送都是会覆盖掉前面发送的,我们不想要覆盖,所以再点开帮助文档,查看texyedit函数或者直接搜索关键字append,查看到append的槽函数,槽函数依旧是函数可以直接调用
所以把setPlaintext函数变更成append函数即可
在这里插入图片描述ctrl + r 运行测试效果
在这里插入图片描述清除功能,查看帮助文档,搜索clear,可以自行添加


END
QT串口助手入门到精通_第56张图片

你可能感兴趣的:(QT,qt,开发语言)