【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的上位机也算是高一个段落了,模块化组装的思想很重要,需要什么就组装进来。