【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】

【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例1】

  • 1、概述
  • 2、实验环境
  • 3、自我总结和提升
  • 4、事先声明
  • 5、效果展示
  • 6、代码编写过程
    • (1)操作步骤部分
      • 1、新建工程
      • 2、加入外部库,并且加入qt工程中
      • 3、ui页面布局
      • 4、代码练习
      • 5、运行测试
    • (2)代码解析
      • 1)标准QStandardItemModel
      • 2)外部库,can相关提供的函数。
      • 3)自己写的功能函数
      • 4)接收功能和解析功能函数
      • 5)槽函数
  • 7、代码链接
  • 8、细节部分
      • (1)波特率的由来
      • (2)放置再其它目录下,在当前目录下运行问题。
      • (3)报错:如下“ui was not ..”或者 “use of ...”什么的。
      • (4)设置储存位置大小为2500
      • (5)一个错误,显示不知道外部库函数。
  • 9、总结

1、概述

有句话叫做,出来还混,早晚是要还得,当时为快点使用完成can的qt上位机,偶然在网上找到一个样例,正好能运行,就直接拿着那个样例进行改了,后来上位机遇到点精准时间问题,一时间不知道如何调,正好也借着这个机会,学习一下样例代码,纯手打一遍。

2、实验环境

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

3、自我总结和提升

(1)通过学习他人代码,理解他的大致思路,是通过调用外部写好的库

(2)自己需要布局和写相应控件函数。

(3)使用了一个叫“标准数组(QStandardItem)”的模型,来承载收与发出的数据。

(4)因为之前学习了示波器,于是将示波器,换成自己之前学习那种。

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、新建工程

新建空白工程,老操作步骤了,尽量快点说,选择widget或者main
(1)点击文件>>>新建文件或项目
在这里插入图片描述
(2)如下选
在这里插入图片描述
(3)一路下一步,这里如果不是很理解“QWidget”和“QMainWindow”,可以理解为都一样的。
在这里插入图片描述
(4)运行,如下图,一个空白工程建立好了
在这里插入图片描述

2、加入外部库,并且加入qt工程中

(1)运行的时候,就是使用如下三个文件,将文件放在建好的工程下,
在这里插入图片描述
(2)然后引用的时候,只要引用“ControlCAN.h”文件就可以了。
在这里插入图片描述
(3)添加”qcustomplot.cpp“和“qcustomplot.cpp”,这两个事原先文件里绘图的,这类因为后期用自己的,看自己需求,也不是我们需要练习的代码,带着也无所谓。
在这里插入图片描述

3、ui页面布局

ui布局这块对于初学者还是比较难的,很多方式优化界面方式,这块没有什么好的办法,只能多看其它人怎么做的,我自己就是这么过来的,然后去一点点自己尝试,很多设置的细节,才能达到某种效果,之前也做个一些特效的实现方式,这里非常建议去看看,当然本篇作为第一篇基础篇,修饰这类的事情,再完成软功能后做。同时,也会说一些效果如何添加。

在这里插入图片描述
这里需要注意:布局可以不太相同,但是ID名字最好注意一下,在代码里引用的时候,名字不一样,可能会造成一定错误。
在这里插入图片描述

4、代码练习

这样就进入了代码练习部分,基本是找不同环节,那不一样,就手动敲一遍。
(1)pro文件
在这里插入图片描述
哪里不i一样,就敲哪里。
在这里插入图片描述

(2).h文件
.h文件下,主要是包含引入文件,一些变量和自己定义的函数。
在这里插入图片描述

(3).cpp文件
.cpp文件里主要是自己使用函数,编写功能,具体实现。
在这里插入图片描述

5、运行测试

代码弄好后,其实有很多细节部分,这里可能因为代码打错,可能会遇到很多问题,新手的话建议多练习吧。具体碰到的一些问题,我也会在细节部分进行说明。

(2)代码解析

如果你按照说明一路敲写了一遍,那么自己会认为,会学到很多东西的,这里就是对自己学习的一些点,进行罗列。

1)标准QStandardItemModel

文档链接:https://doc.qt.io/qt-5/qstandarditemmodel.html
其实光看这些说明,其实不是很理解如何用的,可谓是道路看了许多,真正用起来,还是不明白。
在这里插入图片描述
在这里插入图片描述
通过本次代码样例吧,先练习一下,反过来理解这个,反而轻松明了许多。
第一步:声明与初始化
在这里插入图片描述
第二步:一条数据格式编写,如下图。
在这里插入图片描述
第三步:进行添加
在这里插入图片描述

2)外部库,can相关提供的函数。

如下图,像这类函数,都是来自“ControlCAN.h头文件”,我们在下面设置好配置后,都是在调用这些函数,让函数来帮我们打开设备和关闭等功能。
在这里插入图片描述
其中带的资料:can卡:>>https://download.csdn.net/download/qq_22146161/87439313

我们可以直接看看“ControlCAN.h头文件”,如下图,可以看到有一些定义,和函数方法。
在这里插入图片描述

有个文档里专门说这些函数的,我们练习完代码可以加深对这些函数理解,我也是练习完了代码,对这些函数理解更深一点。
在这里插入图片描述

3)自己写的功能函数

如下图,我认为这点是参照的那位博主写的好地方,很多小功能的代码片段,来整理收到数据,将其转换成我们需要的样子,因为can数据有小端模式的原因,数据是倒过来,我们可以用这些函数重新拼接。
在这里插入图片描述
我们发什么数据也可以直接定成字符串,当然可以自己写相应功能函数。

4)接收功能和解析功能函数

如下图,是接收数据的函数,这里将收到数据,给到标准模型去(QStandardItemModel ),还有数据解析,这里主要是调用外部库的收取函数。
在这里插入图片描述
在数据解析里,可以根据具体按键,做相应解析,本篇先不讲,先知道有这么个函数就行。

5)槽函数

跟界面上触发相关,有很多槽函数,这些槽函数,在点击界面会,会触发功能。
在这里插入图片描述

7、代码链接

这里还是需要说明一下的,我学习的这份代码,是通过那片文章作者留下的联系方式,花钱买的,原本想弄成收费的就完事了,结果等级不够,那就设成VIP专享吧,觉得有价值,可以拿走,或者评论索取。
此代码为第一阶段,样例dome代码。
代码链接:https://download.csdn.net/download/qq_22146161/87740755

8、细节部分

(1)波特率的由来

最开始的是,不清楚为啥,波特率为啥是这个样子的数组。
在这里插入图片描述
直到练习一遍代码后,看了资料。
在这里插入图片描述

(2)放置再其它目录下,在当前目录下运行问题。

在实际运行过程中,一定启动,发现运行是最终的那个,这里做如下勾选掉,这样就是当前目录的了。
在这里插入图片描述

(3)报错:如下“ui was not …”或者 “use of …”什么的。

在这里插入图片描述
解决:就是忘记加入"Widget::"MWaveViewInit()了。
在这里插入图片描述

(4)设置储存位置大小为2500

在文档中,有如下说明
在这里插入图片描述
代码中位置设置。

在这里插入图片描述

(5)一个错误,显示不知道外部库函数。

在这里插入图片描述
解决方式:在.pro文件加入代码段
在这里插入图片描述

9、总结

想说的话以下:
(1)学样例的优点是,很快,很容易学会,但这是毕竟不是自主创造的,所以可能不会那么深入。
(2)自己摸索创造的优点是,很深入每个细节,自己提升更高,缺点是很慢,时常摸不到头脑。
(3)本篇为第一篇,主要使用外部库和can卡硬件,显示can的qt软件基本收发功能。加入示波器和其它,请看后续文章。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

急急急!Kafka Topic 资源权限紧张怎么办?

我们都知道 Kafka 的 topic 资源比较“贵”,所以一般会给项目 topic 权限限制,按需申请。Milvus 会在建新表时自动申请 kafka topic 资源,这时候自动申请不到怎么办?手动配置 topic 要符合什么规范才能被 Milvus 使用?…

聚观早报|特斯拉向第三方电动车开放充电桩;Epic 诉苹果垄断败诉

今日要闻:特斯拉向第三方电动车开放充电桩;我国全面实现不动产统一登记;Epic 诉苹果垄断败诉;腾讯大股东Naspers再减持近79万股;星巴克中国门店将超过万家 特斯拉向第三方电动车开放充电桩 近日,特斯拉官方…

AlgoC++第七课:手写Matrix

目录 手写Matrix前言1. 明确需求2. 基本实现2.1 创建矩阵2.2 外部访问2.3 <<操作符重载 3. 矩阵运算3.1 矩阵标量运算3.2 通用矩阵乘法3.3 矩阵求逆 4. 完整示例代码总结 手写Matrix 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记…

Mysql安装

目录&#xff1a; 1.Mysql安装 2. 安装MySQL出现1045错误 3.更改数据库编码格式 1.mysql图文安装教程(详细说明) &#xff11;、打开下载的mysql安装文件mysql-5.5.27-win32.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe” &#xff12;、选择安装类型&#xff0c;有…

【计算机网络】1.1——因特网概述

因特网概述&#xff08;了解&#xff09; 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成 多个网络还可以通过路由器互连起来&#xff0c;互联网是"网络的网络“ internet 和 Internet internet&#xff08;互联网或互连网&#xff09;是通用名词 泛指…

最近部门新的00后真是卷王,工作没1年,入职18K

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没1年&#xff0c;到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 …

生成式模型与辨别式模型

分类模型可以分为两大类:生成式模型与辨别式模型。本文解释了这两种模型类型之间的区别&#xff0c;并讨论了每种方法的优缺点。 辨别式模型 辨别式模型是一种能够学习输入数据和输出标签之间关系的模型&#xff0c;它通过学习输入数据的特征来预测输出标签。在分类问题中&…

Vue+Echart实现利用率表盘效果【组件已封装,可直接使用】

效果演示 当利用超过70%&#xff08;可以自行设置&#xff09;&#xff0c;表盘变红 组件 里面对应两个图片资源&#xff0c;panelBackground_red.png 和 panelBackground_green.png&#xff0c;请前往百度网盘进行下载。如果喜欢其他颜色&#xff0c;可以使用.psd来修改导出…

基于html+css的图展示43

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

vCenter(PSC)正常更改或重置administrator@vsphere.local用户的密码方法

1. 正常更改administratorvsphere.local用户密码 在vCenter界面中选择“菜单”下的“系统管理”&#xff0c;如下图所示&#xff1a; 然后在Single Sign On下的用户和组中&#xff0c;选择“vsphere.local”域&#xff0c;再对Administrator用户进行编辑&#xff0c;即可进行…

Unsupervised Learning of Depth and Ego-Motion from Video 论文精读

视频中深度和自我运动的无监督学习 摘要 我们提出了一个无监督学习框架&#xff0c;用于从非结构化视频序列中进行单眼深度和相机运动估计。与其他工作[10&#xff0c;14&#xff0c;16]一样&#xff0c;我们使用端到端的学习方法&#xff0c;将视图合成作为监督信号。与之前…

[openwrt] valgrind定位内存泄漏

目录 要求 valgrind 简介 工具介绍 linux程序的内存布局 内存检查的原理 valgrind的使用 使用举例 内存泄漏 内存越界 内存覆盖 Linux分配虚拟内存&#xff08;申请内存&#xff09;的两种方式 brk和mmap 要求 被调试程序带有-g参数编译&#xff0c;携带debug参数…

Ubuntu22.04部署Pytorch2.0深度学习环境

文章目录 安装Anaconda创建新环境安装Pytorch2.0安装VS CodeUbuntu下实时查看GPU状态的方法小实验&#xff1a;Ubuntu、Windows10下GPU训练速度对比 Ubuntu安装完显卡驱动、CUDA和cudnn后&#xff0c;下面部署深度学习环境。 &#xff08;安装Ubuntu系统、显卡驱动、CUDA和cudn…

10 dubbo源码学习_线程池

1. 线程模型&线程池介绍1.1 线程池1.2 线程模型 2. 线程池源码分析2.1 FixedThreadPool2.2 CachedThreadPool2.3 LimitedThreadPool 3. 线程模型源码3.1 AllDispatcher3.2 DirectDispatcher3.3 MessageOnlyDispatcher3.4 ExecutionDispatcher3.5 ConnectionOrderedDispatch…

这些使用工具大推荐,现在知道不晚

1.Snip Snip是一款截图软件&#xff0c;它突出的优点就是可以制作滚动截图。 例如&#xff1a;对整个网页进行截图&#xff0c;使用Snip即可轻松获取&#xff0c;无需处理水印。 2.Sleep Cycle 快节奏、高压力的生活导致我们越来越晚睡觉&#xff0c;睡眠质量越来越差。 想提…

jsp家庭农场投入品信息管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 jsp家庭农场投入品信息管理系统是一套完善的java web信息管理系统 serlvet dao bean 开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

SQL学习日记

目录 一、数据定义&#xff08;create&#xff0c;alter&#xff0c;drop&#xff09; 1.1数据类型 补充注释 1.2定义基本表&#xff08;create&#xff0c;alter&#xff0c;drop&#xff09; 1.3约束 1.3.1主键约束 1.3.2外码约束 ​编辑 补充CASCADE 关键字 1.3.3…

深度学习 - 45.MMOE Gate 简单实现 By Keras

目录 一.引言 二.MMoE 模型分析 三.MMoE 逻辑实现 • Input • Expert Output • Gate Output • Weighted Sum • Sigmoid Output • 完整代码 四.总结 一.引言 上一篇文章介绍了 MMoE 借鉴 MoE 的思路&#xff0c;为每一类输出构建一个 Gate 并最终加权多个 Exper…

05 KVM虚拟化Linux Bridge环境部署

文章目录 05 KVM虚拟化Linux Bridge环境部署5.1 安装Linux Bridge5.1.1 安装bridge-utils软件包5.1.2 确认安装是否成功 5.2 配置Linux Bridge5.2.1 创建网桥br05.2.2 将物理网卡ens33绑定到Linux Bridge5.2.3 配置ens33的ip5.2.4 为Linux Bridge网桥br0分配ip5.2.4.1 DHCP设置…

sin(x) + cos(x) 的极大值和极小值

sinx cosx 的极大值和极小值 理论推导图像 今天遇到了一个问题&#xff0c;就是如何求解 sin ⁡ x cos ⁡ x \sin{x} \cos{x} sinxcosx 的极大值和极小值。这里特来记录一下。 理论推导 首先&#xff0c;我们假设&#xff1a; sin ⁡ x cos ⁡ x R sin ⁡ ( x α ) (…