目录

  • 1. 概述
  • 2. 16进制/ASCII发送
    • 2.1 功能实现
    • 2.2 界面修改
  • 3. 接收框显示发送内容
    • 3.1 以16进制/ASCII显示
      • 3.1.1 界面修改
      • 3.1.2 功能实现
    • 3.2 支持更多编码格式
  • 4. 增加时间戳
    • 4.1 界面修改
    • 4.2 功能实现
  • 5. 增加周期发送
    • 5.1 界面修改
    • 5.2 功能实现

1. 概述

距离上次起意学习Qt已经过去了好久,最近又萌生了自己写工具的想法。真的是间歇性踌躇满志,持续性混吃等死。。。
前面跟着课程做了个串口工具的demo,实现简单的收发。这个工具还很简陋,无法满足正常使用。本文开始,为串口工具增加日常使用频率比较高的一些功能,如16进制/ASCII发送、周期发送、接收16进制/ASCII显示等。
先逐渐实现各个功能,最后再对界面进行重新布局。明确实现哪些功能–>调整界面布局–>依次实现功能,这样更好。不过自己学习嘛,想到啥功能就添加啥功能,天马星空,随意就好。

2. 16进制/ASCII发送

在Qt5学习笔记之串口助手一文的最后,测试我们输入的内容是以ASCII发送的。实际上输入的FF FF 4E 04 00 18 00 00 56 FF是我们的自定义协议,需要按照16进制发送。

2.1 功能实现

QLineEdit是QString,也就是需要把QString转换为16进制数组,搜索了一下,好像没有专门的函数,不少人贴出自己的实现方式(如Qt字节数组和十六进制的相互转换)。我的想法是:

  1. 指令之间不输入空格,使用循环,每次裁剪len=2的小字符串,转换成16进制。

    QString str1;
    str1 = str.mid(2 * i, 2);
    
  2. 考虑到有空格,输入更加直观。可以每次按照空格来切割字符串,就可以得到len=2的小字符串,分别转换成16进制。
    QString str1;
    str1 = str.section(' ', i, i);
    
  3. 记录另一种切割方式
    QStringList list1;
    int x, y, z;
    list1 = str.split(' ');
    x = list1 .at(0).toInt();
    x = list1 .at(1).toInt();
    x = list1 .at(2).toInt();
    

一边搜一边写,然后就发现不必自己实现。。。。

void Widget::on_sendBt_clicked()
{//serialPort->write(ui->sendEdit->text().toLocal8Bit().data());serialPort->write(QByteArray::fromHex(ui->sendEdit->text().toLatin1().data()));
}


参考链接:
Qt - 关于QByteArray存储十六进制 与十六进制互转
QString的toLocal8bit与toLatin1的区别
【QT】QString类型转换为const char*(toLatin1)

2.2 界面修改

界面上增加一个选择框,让使用者能够根据实际情况选择以16进制还是ASCII码发送。
选择框

3. 接收框显示发送内容

使用过程中,我们更希望在

3.1 以16进制/ASCII显示

转换为16进制

3.1.1 界面修改

3.1.2 功能实现

收到一帧数据,则发送回去
增加数据解析,

3.2 支持更多编码格式

暂不实现,占个位置。

4. 增加时间戳

增加时间戳,Qt5学习笔记之计时器一文中已经实现过,

4.1 界面修改

4.2 功能实现

5. 增加周期发送

5.1 界面修改

界面增加周期发送选项和周期设置

5.2 功能实现

Qt5学习笔记之串口助手四:增加16进制/ASCII切换、周期发送相关推荐

  1. Qt5学习笔记之串口助手三:打包成Windows软件

    这里写目录标题 添加图标 打包程序 测试打包好的软件 添加图标 图标的获取可以参考我的另一篇文章:Qt5学习笔记之图标下载和转换,这里只记录下Qt中使用图标的方法. 1.切换到release模式下进行 ...

  2. Qt5学习笔记之串口助手一:基本界面设计

    这里写目录标题 概述 界面基本元素 添加串口参数 添加串口号 概述 从这一篇文章开始,跟着视频实现一个串口助手.当然,这里实现的串口功能比较简单,只有最基础的串口参数设置.发送.接收.在之后的拓展学习 ...

  3. Qt5学习笔记之串口助手二:发送接收实现

    这里写目录标题 一级目录 显示接收内容 实现发送功能 一级目录 1.定义一个串口端口的对象并实例化 2.打开按钮自动关联槽函数 #include 显示接收内容 需要手动关联槽函数 查看应该使用的信号 ...

  4. Qt5学习笔记之QString的使用

    目录 概述 2.QString字符串的操作 2.1 拼接 2.2 裁剪 2.3 转换为int型 2.4 int转换为QString 2.5 小写字母大写字母转换 2.6 转换为16进制 概述 学习过程 ...

  5. 串口编程 - ascii字符与16进制的相互转换

    串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...

  6. KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3——串口Stdio实现

    KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记3--串口Stdio实现 一.介绍 任务目标 二.工程创建 三.软件设计 第一步,BSP构建 1, 添加前面的pll_config文件 2 ...

  7. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  8. mysql循环查询一个表中的数据并进行修改_JavaScript学习笔记(二十四)-- MYSQL基础操作...

    MYSQL mysql 是一个数据库的名字 和 php 合作的比较好的数据库 之前我们说过一个问题,前端向后端索要数据,后端就是去数据库中查询数据,返回给前端 接下来就聊聊使用 php 操作数据库 M ...

  9. oracle rac添加监听,【学习笔记】Oracle 10G RAC增加节点时手动注册监听服务的案例步骤...

    [学习笔记]Oracle 10G RAC增加节点时手动注册监听服务的案例步骤 时间:2016-10-22 22:53   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Ora ...

最新文章

  1. 学了这些,他薪资涨了40%,收割了阿里、头条、快手等大厂的offer!
  2. Python基础知识梳理(一)
  3. [正则表达式]文本框输入内容控制
  4. C++知识点38——拷贝赋值运算符、析构函数、=default、阻止拷贝和赋值
  5. 数据结构与算法(一):排序算法之 - 快速排序(详细步骤图解,附代码)
  6. LeetCode刷题: 整数反转
  7. rust怎么不要的墙拆掉_封阳台,栏杆要不要拆掉?栏杆装在玻璃窗里面还是外面...
  8. 软考系统架构师笔记-综合知识重点(三)
  9. 浏览器css bug及bug解决方法
  10. Linux 下的任务管理 —— ps、top
  11. 如何将Safari中保存的密码导入Chrome ?
  12. 网络编程基础,传输层服务
  13. jaxb xml 生成 java_java-如何使用JAXB定制XML导出
  14. 对股票进行可视化分析
  15. 网络安全(二)安全基础
  16. 栅格数据矢量化(附有完整代码)
  17. 选择阿里云数据库HBase版十大理由
  18. 5G接入网学习:什么是C-RAN、D-RAN?
  19. 很多IT从业者感觉到中国程序员前景一片灰暗,事实是如此吗?
  20. 特征预处理:归一化/标准化/缺失值

热门文章

  1. 删除mysql指令_MySQL常用命令学习笔记
  2. python列表使用技巧大全_Python 基础起步 (六) List的实用技巧大全
  3. python中pprint是干什么的_Python中的pprint折腾记
  4. mysql check约束无效_mysql数据库 check约束无效
  5. plaintextedit指定一行一行的高亮显示_RDKit | 基于RDKit的指定原子或键高亮
  6. idea编译器没有tomcat的选项解决方案
  7. 男孩子初中毕业学计算机技术,男孩子初中毕业学什么技术好就业
  8. 软件工程中需要学习和掌握的软件都有哪些_上海理工大学869软件工程考研经验...
  9. R 语言与简单的回归分析
  10. linux设置进程不忽略信号,Linux下后台进程编写中屏蔽信号