【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰+解析功能编写+进阶样例(2)】

news2024/11/24 6:00:50

【QT5:CAN卡通信的上位机-加入示波器-界面优化与修饰+解析功能编写+进阶样例2】

  • 1、概述
  • 2、实验环境
  • 3、自我总结和提升
  • 4、事先声明
  • 5、效果展示
  • 6、功能代码部分的解析
      • 1)自定义组合功能函数
      • 2)数据解析部分
      • 3)示波器接收部分
  • 7、界面修饰部分
      • 1)对于软件图标和打包
      • 2)对于图标按键
      • 3)对于示波器部分
  • 8、代码链接
  • 9、细节部分
      • (1)异常结束
      • (2)没有绘图图像问题
      • (3)定时高精度调试
  • 10、功能测试
  • 11、总结

1、概述

前一篇链接:
【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】
书接上文,本篇对can上位机软件进行优化,同时加入示波器等,编写一定功能。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2

3、自我总结和提升

(1)本篇其实主要是对于以往知识的运用,之前写过有关打包的文章,示波器的文章,图标按键的文章,现在是时候组合起来的时候了。

(2)我们编写上位机,其实要完成自己的想要的功能的,这里也会说些相应功能的编写,我这里主要是做个电机控制相关功能,涉及电机方向一些知识,不了解的话,只要知道有些特定ID就行。

4、事先声明

(1)我学习的这份代码,是通过那片文章作者留下的联系方式,花钱买的,原本想弄成收费的就完事了,结果等级不够,那就设成VIP专享吧,觉得有价值,可以拿走,或者评论索取。

在这里插入图片描述

会提供那篇文章连接,如有需要自己向他寻求。
博客链接:https://blog.csdn.net/hs977986979/article/details/109652847

(2)我目前使用的can卡种类不是很多,就一种,是专门针对这个can卡,学习和写的上位机,所以软件可能不支持其它类型can卡,我会发出我买这款can卡连接。
在这里插入图片描述

1、can卡购买链接:某宝搜“创芯科技 CAN分析仪 CANOpen J1939 DeviceNet USBCAN USB转CAN 高配版(红色)”

2、can卡资料链接:can卡:>>https://download.csdn.net/download/qq_22146161/87439313

5、效果展示

这个系列最后效果图展示。
(1)第一个界面:接收界面
在这里插入图片描述

(2)第二个界面:绘图界面
在这里插入图片描述

6、功能代码部分的解析

1)自定义组合功能函数

(1)这些函数是自己编写,可以根据自己需求,对收到的数据,或者发出的数据进行组装,如下图,两个函数其实很像,但是对于每个位不同排列,最后结果就是不一样的。
在这里插入图片描述

(2)另外一点比较方便的是,自己想要发送某些数据时,最后可以转换成字符串的拼接,比较方便,如下图,定义一些固定字符串,最后和数据段,进行数据粘贴,使用自定义函数,直接发送。
在这里插入图片描述

2)数据解析部分

上篇未完成的数据解析部分,在这里说明,如下图,都是解析数据的,第一步都是根据ID,进行分类,哪个ID进哪个选项,有时候,ID无法无法区分的话,还可以用里面的数据每个位进行分析数据。
在这里插入图片描述

3)示波器接收部分

这块需要先加入示波器那部分修饰,但是接收数据部分的方式是,我这边定义了一个全局数组变量,只要can卡有数据收到过来,我就记录到这个全局变量中,如下图,接收到数据,直接给全局数组变量赋值。
在这里插入图片描述

然后示波器绘图时,直接访问这个全局数组变量的值,如下图,上半部分是进行赋值,下边进行绘制。
在这里插入图片描述

(1)这样的好处是,不必担心数组堵塞问题,接收和示波器,被一个变量连接起来了,这两块是完全独立部分,一方出问题,不牵连另一方。
(2)这样的坏处是,有可能丢值,即数据更新了,但是示波器没来及画,这块自己没有实际测试过,看各位使用时需求了。

7、界面修饰部分

到了界面修饰部分,一般在完成想要的功能后,最后做界面相关修饰,功能做完了后,其实软件基本就可以正常使用了,修饰相当画龙点睛,让界面更美观,更加人性化,另外这部分跟人的审美偏好有很大关系,所以可以算是完全独立的一个部分来做。

向我们这种自学的,也没追求到,界面完美无瑕地步,所以简单修饰一下。并且一些修饰都是自己之前说到过的,这里直接借鉴就可以了,这也体现了模块的思维,想用什么,直接组合进来。

1)对于软件图标和打包

相关链接:#【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】

2)对于图标按键

相关链接:【QT5 实现“上图下文”,带图标的按键样式-toolbutton-学习笔记-记录-基础样例】实现方式之一

3)对于示波器部分

相关链接:【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

8、代码链接

以下代码,觉得有价值,就拿走,我这边设成了VIP专享,具体为什么,可以看前一篇,当然也可以评论索取。
(1)仅仅融合了示波器的代码,还没有编写功能函数
代码链接:https://download.csdn.net/download/qq_22146161/87741015
(2)编写了相关功能,还未修饰
代码链接:https://download.csdn.net/download/qq_22146161/87741021
(3)完成修饰,最后版本,也是效果图版本
代码链接:https://download.csdn.net/download/qq_22146161/87741029

9、细节部分

(1)异常结束

如下图,学习博主的代码里,加入了状态栏,因为我没有用上,这块也就没打,但是真正练习的时候,忘记了,就给打上了,不注释掉的话,会引起程序异常结束。
在这里插入图片描述

(2)没有绘图图像问题

因为是外部引入的,该引入的都添加完了,发现示波器不绘图,这时候可以检查下,这个函数,位置不对,是不出图的。
在这里插入图片描述

(3)定时高精度调试

这边调试的项目上,其实对定时器精准要求挺高的,但是目前从网上查到资料来看,因为qt最终是调用系统上的定时器,而win能提供精度有限。
自己尝试,定时20ms,总是有1ms的误差,但是接收方,误差更大些,这块暂时没有好的解决方式吧。

10、功能测试

如下图,硬件其实就只有一个can卡,因为有一种模式是自发自收,我们暂时不需要额外的设备,就能对软件进行测试,硬件如下图。
在这里插入图片描述
软件选择自发自收,然后点自动发送。

在这里插入图片描述

11、总结

这样can的上位机也算是高一个段落了,模块化组装的思想很重要,需要什么就组装进来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NFT Insider #93:The Sandbox启动Mega City 3土地销售,YGG​与AlphaTitans合作

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

一文带你了解MySQL数据库Innodb_buffer_pool_size

前言 上篇文章介绍了MySQL中的存储引擎层主要负责数据的写入和读取,与底层的文件进行交互。MySQL在5.5 版本以后,MySQL默认存储引擎为 InnoDB,他的主要特性有: DML 操作(增、删、改)遵循 ACID(事务安全表) 模型,支持事…

【Linux从入门到精通】Linux常用基础指令(下)

本篇文章接上篇文章(【Linux从入门到精通】Linux常用基础指令(上)、【Linux从入门到精通】Linux常用基础指令(中))进行详解。本章的指令相对没有那么常用,难度相对适中。同时也讲述了几个热键。…

编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?

重写push与replace方法 编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误? 路由跳转有俩种形式:声明式导航,编程式导航 声明式导航没有这类问题的,因为…

【精华】WiderPerson数据集介绍及标签转换(YOLO格式)

文章目录 &#xff08;1&#xff09;WiderPerson数据集详情<1> 应用项目<2> 数据集地址<3> 归属单位<4> 详细介绍<5> 数据下载及格式介绍 &#xff08;2&#xff09;WiderPerson转YOLO格式<1> 文件夹结构<2> 数据可视化<3> YO…

全国计算机等级三级网络技术试卷详解(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.下列关于RPR技术的描述中&#xff0c;错误的是&#xff08;&#xff09;。 A) RPR与FDDI一样使用双环结构 B) 在RPR环中&#xff0c;源节点向目的节点成功发出…

JVM(Java虚拟机)

目录 1.JVM 简介 2. JVM 运行时数据区 2.1程序计数器 2.栈 3.堆 4.方法区 3.类加载 1.loading 2.linking 1.验证 2.准备 3.解析 3.Initializing 4.双亲委派模型 5.JVM垃圾回收机制 1.劣势 2.回收什么 3.垃圾回收具体怎么回收 1.找垃圾 方法: 问题: 2.释放…

4月JAVA面试太难,吃透这份JAVA架构面试笔记后,成功涨到30K

昨天跟一位高级架构师的前辈聊天时&#xff0c;聊到今年的面试。有两个感受&#xff0c;一个是今年面邀的次数比往年要低不少&#xff0c;再一个就是很多面试者准备明显不足。不少候选人能力其实不差&#xff0c;进入团队干活后达到期望不难&#xff0c;但由于没准备或不会表达…

快速响应 智慧应急|大势智慧亮相第三届武汉国际安全应急博览会

4月26日至4月28日&#xff0c;第三届武汉国际安全应急博览会&#xff08;后简称“应博会”&#xff09;在湖北武汉顺利举办。本次展会&#xff0c;大势智慧以实时三维重建能力为核心&#xff0c;提供各类应急场景的技术支撑&#xff0c;助力应急处置和救援等方面的应用。 展会…

基于AI技术的智能考试系统设计与实现(论文+源码)_kaic

摘 要 随着当今世界互联网信息技术的飞速发展&#xff0c;互联网在人们生活中的应用越来越广泛&#xff0c;在线考试成为选拔人才的重要方法。实现一个基于AI技术的智能考试系统&#xff0c;该系统采用Java编程语言实现。通过使用自然语言处理技术和机器学习算法&#xff0c;该…

【C++】入门

目录 1. 什么是C2. 命名空间2.1 命名空间的定义2.2 命名空间的使用 3. 输入和输出4. 缺省参数4.1 概念4.2 分类 5. 函数重载5.1 函数重载概念5.2 为什么支持函数重载 6. 引用6.1 概念6.2 特性6.3 常引用6.4 指针与引用的区别 7. 内联函数7.1 特性 1. 什么是C C语言是结构化和模…

【c语言】五大内存区域 | 堆区详解

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

Paimon: Streaming data lake 数据湖项目的后起之秀

什么是Paimon? Paimon的官网介绍是&#xff1a;Streaming data lake platform with high-speed data ingestion, changelog tracking and efficient real-time analytics. Paimon 是流数据湖平台&#xff0c;具有高速数据摄取、变更日志跟踪和高效的实时分析能力 数据湖是大…

unity什么是曲线动画?

介绍 unity什么是曲线动画&#xff1f; 在Unity中&#xff0c;曲线动画&#xff08;Curve Animation&#xff09;是一种基于曲线的动画系统&#xff0c;它允许你通过在时间轴上编辑曲线来控制游戏对象的某个属性在时间上的变化。曲线动画可以用于很多方面&#xff0c;比如控制…

Linux套接字编程-2

在上一篇博客中&#xff0c;我们先对套接字编程的内容进行了一个简单涵盖&#xff0c;并详细陈述了UDP协议内容。本篇我们承接上文&#xff0c;讲述完UDP后&#xff0c;我们来讲解TCP。 目录 1.TCP协议 1.1通信两端流程 1.1.1服务端流程 1.1.2客户端流程 1.2套接字相关操…

LeCun、田渊栋参与撰写,70页「自监督学习」大全

来源 | 机器之心 微信号&#xff1a;almosthuman2014 「关于自监督学习&#xff0c;你想知道但又不敢问的一切都在这里了。」图灵奖得主、Meta 人工智能首席科学家 Yann LeCun 刚刚发了这样一则推文。 在推文中&#xff0c;LeCun 介绍了他和 Meta 人工智能研究院研究员、研究经…

数据结构学习记录——判断是否为同一颗二叉搜索树(题意理解、求解思路、程序搭建框架、具体函数的实现)

目录 题意理解 问题 描述 输入样例 输出样例 求解思路 建两棵二叉树 不建树 建一棵树 搜索树表示 程序框架搭建 如何建搜索树 如何判别 方法 查找函数 判断函数 其他函数 题意理解 给定一个插入序列就可以唯一确定一颗二叉搜索树。 但是&#xff0c;一颗给定…

libigl添加Viewer Menu时出现imgui相关的错误:无法打开包括文件: “imgui.h”: No such file or directory

libigl添加如下图所示的Viewer Menu时&#xff0c;出现了“无法打开包括文件: “imgui.h”: No such file or directory”的错误 很显然是libigl内嵌的imgui出了问题 从项目路径libigl-example-project-main\out\build\x64-Release\_deps\libigl-src\include\igl\opengl\glfw\…

【谷粒商城之CompletableFuture异步编排】

本笔记内容为尚硅谷谷粒商城CompletableFuture异步编排部分 目录 一、线程回顾 1 、初始化线程的 4 种方式 2.、线程池的七大参数 运行流程&#xff1a; 3、常见的4种线程池 4、开发中为什么使用线程池 二、CompletableFuture 异步编排 业务场景 1、创建异步对象 …

无线化超轻薄,香港城市大学体感反馈贴片WeTac

此前&#xff0c;青亭网曾报道香港城市大学与腾讯Robotics X Lab合作研发的低电压体感方案&#xff0c;原理是通过微电流刺激来模拟触觉&#xff0c;可模拟微小物体的体感。近期&#xff0c;香港城市大学的一组科研人员也公布了一项类似的方案&#xff1a;WeTac&#xff0c;该方…