当前位置:网站首页>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程序的小伙伴可以留下自己的邮箱,届时将打包发送。
注:由于小伙伴需要源代码的时间不同,登录邮箱界面太多麻烦,所以建立了一个订阅号,如果有问题或者需要源码,可添加订阅号,留言后会发送源代码或者有任何问题可留言,将积极解决提出的问题。

边栏推荐
- 基于R语言地理加权回归、主成分分析、判别分析等空间异质性数据分析
- Shardingsphere depots table and configuration example
- 边境的悍匪—机器学习实战:第九章 无监督学习任务
- 树莓派OpenCV+OpenCV-contrib
- “R语言+遥感”的水环境综合评价方法
- Use kotlin to extend plugins/dependencies to simplify code (after the latest version 4.0, this plugin has been deprecated, so please choose to learn, mainly to understand.)
- Application of remote sensing, GIS and GPS technology in hydrology, meteorology, disaster, ecology, environment and health
- Generalized Focal Loss paper reading notes
- QT串口动态实时显示大量数据波形曲线(五)========“最终完美解决版”
- 二叉树(一):深度优先遍历与广度优先遍历
猜你喜欢

边境的悍匪—机器学习实战:第七章 集成学习和随机森林

基于OpenCV的双目重建

Pytorch(二):数据读取机制(DataLoader、DataSet)与图像预处理模块(transforms)

遥感、GIS和GPS技术在水文、气象、灾害、生态、环境及卫生等应用

十四、Kotlin进阶学习:一、内联函数 inline;二、泛型;三、泛型约束;四、子类与子类型;

MATLAB怎么在图像中显示nii文件切片信息?

边境的悍匪—机器学习实战:第六章 决策树

大气颗粒物 PMF 源解析

Self-augmented Unpaired Image Dehazing via Density and Depth Decomposition program running record

工厂模式(Swift 实现)
随机推荐
XMLBean的基础运用
九、Kotlin基础学习:1、Companion的扩展方法和扩展属性;2、一般类的扩展方法和扩展属性;3、委托;
FPGA解析B码----连载2
Kaggle-M5
六、Kotlin基础学习:函数
单例模式:Swift 实现
Use kotlin to extend plugins/dependencies to simplify code (after the latest version 4.0, this plugin has been deprecated, so please choose to learn, mainly to understand.)
生产力工具分享——简洁而不简单
Pytorch(二):数据读取机制(DataLoader、DataSet)与图像预处理模块(transforms)
CLUE模型构建方法、模型验证及土地利用变化情景预测
mysql delete duplicate data in the table, (retain only one row)
【零基础搞定C语言——导航汇总篇】
学生成绩管理系统(C语言版)
求职准备知识点
边境的悍匪—机器学习实战:第十六章使用RNN和注意力机制进行自然语言处理
常用损失函数(二):Dice Loss
MySQL 索引优化及失效场景
十六、Kotlin进阶学习:协程详细学习。
Go简单实现协程池
基于R语言地理加权回归、主成分分析、判别分析等空间异质性数据分析