当前位置: 首页 > news >正文

P4 QT项目----会学串口助手(解析笔记)

一.第一步打开串口和关闭串口

打开串口之前需要完成以下参数配置

1.配置串口2.配置波特率3.配置数据位4.配置校验位5.配置停止位6.配置流控7.打开串口8.关闭串口

配置完以上参数才可与串口连接上,打开串口后,以上参数不可修改,需要关闭串口才可以修改

(QMessageBox类)当打开串口失败需要提示失败的原因,以及打开成功在会学串口助手左下角显示COMx Is Open!

二.发送按键

1.需要将横线里面的内容读取

2.判断发送按键是否按下,按下则发送,否则未发送

3.发送成功在左下角显示Send OK!

4.记录发送数据的大小

5.发送新行,检测新行按键是否按下,在字符串后面添加\r\n

三.定时发送(QTimer类)

1.在ui界面将按键转为槽函数(bool类型)

2.定时需要定时器,定义一个定时器

3.连接一个信号与槽函数

使用 C++11 Lambda表达式 connect(sender, &Sender::signal, [=]() { /*执行函数 */ });

                                connect(timer,&QTimer::timeout,[=](){ on_pushButton_Send_clicked(); });

4.按下时将定时器开启,关闭时将定时器停止(结束发送)

四.HEX发送(QByteArray类)

1.hex发送需要满足两个要求

(1)判断横线的字符串是否为偶数位:方式 :字符串%2

(2)判断横线的字符串是否满足HEX进制表达 :用函数判断:std::isxdigit(字符串)

满足这两个要求即将横线的字符串转为HEX进制的字符

五.接收(QSerialPort类

1.如何接收发送的内容显示在TextEdit上?

QSerialPort类继承QIODevice类有个信号readyRead(),需要在串口上进行信号与槽的绑定

connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

connect(serialPort,&QSerialPort::readyRead,this,&Widget::on_serialData_readyToRead);

在槽函数里面接收一个端口发送的字符串,将字符串打印在TextEdit上。

2.如何接收显示HEX进制的内容QByteArray类)

(1)将新接收的数据进行类型转换成HEX(QString->QByteArray)

(2)把原来在TextEdit的文本提取出来

(3)将文本进行拼接TextEdit(QString->QByteArray) + 新接收的数据

六.清空接收

1.在ui界面中将该按键转为槽函数,清空接收的文本,即将文本设置位“ ”空。

七.保存接收(QFileDialog类

1.将文本定义一个QFileDialog类的QFileDialog::getSaveFileName,得到保存的地址以及文件的类型。

2.打开文件(只写和文本模式)

3.输入文件的内容

4.关闭文件

八.接收时间(QDateTime类

1.获取时间:QDateTime currentTime = QDateTime::currentDateTime(); /* 获取当前的日期 */

2.获取日期(年月日):QDate date = currentTime.date();

3.获取时间(时分秒):QTime time = currentTime.time();

4.显示在列表Mytime = QString("%1-%2-%3 %4:%5:%6")          .arg(year,2,10,QChar('0')).arg(month,2,10,QChar('0')) .arg(day,2,10,QChar('0'))          .arg(hour,2,10,QChar('0')).arg(minute,2,10,QChar('0')) .arg(second,2,10,QChar('0'));

5.调用一个信号与槽函数connect(getSysTimer,SIGNAL(timeout()),this,SLOT(time_Reflash()));将1,2,3,4在槽函数里面获取,及显示在文本上。

6.在接收函数为非HEX进制显示,判断该checkBox接收时间是否按下,在接收文本前加上时间Mytime+字符串 进行显示。

九.自动换行

1.在接收函数显示,判断该checkBox接收时间是否按下,在接收文本后加上字符串+\r\n 进行显示。用rev.append(“\r\n”)

十.隐藏面板,隐藏历史

1.在ui界面中将该按键转为槽函数(含有bool类型),清空接收的文本,接收历史面板隐藏

十一.多文本发送

1.每个按键都建立槽函数,但是这样代码过长,不方便管理

2.利用数组将每个按键遍历出来。

(1)建立一个全局数组 QList<QPushButton *> buttons;

(2)利用一个for循环遍历9个按键

(3)将每个按键的名字打印出来(QString类型)

(4)用QPushButton *btn = findChild<QPushButton *>(按键的名字)(QObject类)函数,找到ui界面时哪个按键按下

  (5)将找到的btn添加到buttons的数组里面

(6)建立一个按键的信号与槽函数:connect(btn,SIGNAL(clicked()),this,SLOT(on_commandButtonClicked()));

  (7)找出发送信号的按键QPushButton *btn = qobject_cast<QPushButton *>(sender());

(8)定义一个数字获取哪个按键的序号:int num = btn->property("buttonID").toInt();

(9)重新构建lineEdit,checkBox,以num为遍历9个lineEdit,checkBox与pushButton对应

(10)调用发送函数实现功能

十二.多文本定时发送

与定时发送一致

十三.多文本重置按键(QMessageBox类

1.点击重置按键提示是否要重置文本内容(是与否)

2.重置文本

(1)清空lineEdit里面的内容

(2)HEX复位

十四.多文本保存(QFileDialog类

与保存接收一致

十五.多文本载入(QFileDialog类

1.将文本定义一个QFileDialog类的QFileDialog::getOpenFileName,得到打开的地址以及文件的类型。

2.打开文件(只读和文本模式)

3.遍历9个lineEdit,checkBox并读取的内容

4.关闭文件

http://www.xdnf.cn/news/1008577.html

相关文章:

  • 航电系统之数据通信技术篇
  • 管理员端用户操作手册
  • C# 支持 ToolTip 功能的控件,鼠标悬停弹提示框
  • 【加密+解密】2022-5-18
  • matlab设计滤波器及导出系数python调用
  • 注册bean和自动配置的原理、过程
  • Vue首屏加载速度优化方案
  • ssh连接踢出脚本
  • RX Byte and Word Alignment Attributes
  • 我的世界进阶模组开发教程——开发机械动力附属模组(2)
  • Android Jetpack 组件库 ->Jetpack Navigation
  • 第十节 高频代码题-类型推断题
  • 硬件工程师成长之路--电容
  • 在GIS 工作流中实现数据处理(3)
  • 25年春招:携程java开发一面
  • linux使用find搜索文件命令
  • VUE - AxiosError-ERR_BAD_REQUEST
  • 瓷器数字化展示文物三维扫描建模-中科米堆
  • 2025年6月英语六级作文高分模板目录(共20篇)
  • ssc377d在kernel下读写寄存器
  • 进程间通信之消息队列
  • 大厂机试题解法笔记大纲+按知识点分类+算法编码训练
  • Coze搭建工作流
  • DWS层新增指标处理方案
  • 工程项目管理软件选型指南:核心功能、技术架构与行业实践
  • 获取分布式锁
  • 医院部署IBMS系统时,哪些关键因素需要重点权衡与规划
  • 【C语言】*与深层理解
  • 【Vue3/Typescript】从零开始搭建H5移动端项目
  • 【二分模版------左闭右闭】