当前位置:网站首页>QT串口和CAN数据动态实时显示最后日志
QT串口和CAN数据动态实时显示最后日志
2022-07-30 05:45:00 【透明的光】
前言
从11月20号到12月10号,编写QT的串口和CAN通讯的上位机显示程序,经历20天。整个项目下来,感觉软件方面,特别是面对对象编程方面有了一定的了解,也了解到面对对象编程和面向逻辑编程的区别。整体来说,编程过程区别不是很大:面对对象编程也需要逻辑编程,而逻辑编程不包含对象编程。至于串口和CAN的区别,仅仅是底层硬件的区别,对于上层编程来说,区别并不是很大。
第一部分:对象编程和逻辑编程
(1)语言用法不用:QT基于c++,单片机基于C。前者基于类,后者最多用到结构体。相对来说逻辑编程入门容易,进阶难;对象编程入门难,进阶还算可以。
(2)思路不同:QT基于信号和槽,实时执行,单片机基于循环和中断。
(3)针对对象不同:QT仅仅是制作上位软件,属于外围设备,即发送或接受端;单片机是硬件支持,外围可以是开关、通讯接口、也可以是QT制作的外围显示和信号输入(通讯)。
(4)逻辑不同:QT通过通讯协议下发命令,其命令通过虚拟按键或者逻辑实现。单片机通过初始化硬件接口,其代码通过大循环+中断完成。
两者位置大概如图所示:
第二部分:QT中串口和CAN的区别
(1)函数来源不同:QT中自带串口的函数,CAN的函数需要厂商提供的dll文件。
(2)接收函数效果不同:串口接收函数recvData = mSerial.readAll()将接收到的数据放到recvData 数组中,数组是连续的,即接收100个,数据就放到数组0到99;CAN接收函数ReceiveNum = VCI_Receive(nDeviceType,nDeviceInd,nCANInd,Receive,100,400)是放在Receive数组中,数组仅仅是8个,无论接收多少个都放在数组0到7。
(3)效果不同:排除内在逻辑和外围逻辑问题,串口接收数据并绘图的可靠性低于CAN接收数据并绘图。相同情况下,串口接收会丢点,而CAN接收却不会(观察波形)。在绘图个数较少的情况下,二者并没有明显的差别。
下图为串口接收数据并绘图:
下图为CAN接收数据并绘图
整体来看,二者在数据动态实时显示上并没有本质区别,仅仅在底层传输与处理上有各自的特点。
第三部分:总结
数据显示:串口和CAN的上位软件制作告一段落。整体感觉仅仅制作显示界面的程序并不是太难,只是程序入门比较困难。初步估计短时间内也不会再设计此类项目,编写的代码也将封存,如果有需要用到串口或者CAN的QT程序的小伙伴可以留下自己的邮箱,届时将打包发送。
注:由于小伙伴需要源代码的时间不同,登录邮箱界面太多麻烦,所以建立了一个订阅号,如果有问题或者需要源码,可添加订阅号,留言后会发送源代码或者有任何问题可留言,将积极解决提出的问题。
边栏推荐
猜你喜欢
Trust anchor for certification path not found.异常解决方法。
边境的悍匪—机器学习实战:第七章 集成学习和随机森林
建造者模式(Swift 实现)
标准化(Normalization)知识点总结
QT每周技巧(3)~~~~~~~~~串口添加
点云统计滤波理解
QT连载4:基于QT和STM32H750的LORA试验平台(3)
Twenty-two, Kotlin advanced learning: simply learn RecyclerView to achieve list display;
抽象工厂模式(Swift 实现)
Pytorch(一):动态图机制以及框架结构
随机推荐
Basic application of XMLBean
新导则下 防洪评价报告编制方法及洪水建模(HEC-RAS)
十、Kotlin基础学习:1、延迟加载;2、异常处理;3、使用 throw 主动抛出异常;4、自定义异常;
十三、Kotlin进阶学习:内联函数let、also、with、run、apply的用法。
边境的悍匪—机器学习实战:第十三章 使用TensorFlow加载和预处理数据
二十二、Kotlin进阶学习:简单学习RecyclerView实现列表展示;
边境的悍匪—机器学习实战:第一章 机器学习的基础知识
Trust anchor for certification path not found. Exception solution.
The first WebAssembly program
边境的悍匪—机器学习实战:第十一章 训练深度神经网络
Mysql client common exception analysis
边境的悍匪—机器学习实战:第七章 集成学习和随机森林
QT每周技巧(1)~~~~~~~~~运行图标
十四、Kotlin进阶学习:一、内联函数 inline;二、泛型;三、泛型约束;四、子类与子类型;
User password encryption using Bcrypt instead of MD5, SHA1 and SHA256
Arthas command parsing (jvm/thread/stack/heapdump)
十一、Kotlin进阶学习:1、集合;2、List操作;3、可变集合——MutableList;4、Set;5、Map;6、MutableMap;
Pytorch(三):可视化工具(Tensorboard、Visdom)
十九、Kotlin进阶学习:1、管道数据的收和发;2、管道的关闭;3、生产者和消费者;4、管道的缓存区;
QT串口动态实时显示大量数据波形曲线(四)========“界面的美化与处理”