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

news2024/11/23 21:52:14

【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软件基本收发功能。加入示波器和其它,请看后续文章。

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

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

相关文章

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

文章目录 前言一、配置 buildroot 及编译二、写 QT 代码三、编译可执行文件四、拷贝到 SD 卡五、上板子测试六、资源自取 前言 有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作…

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境

人工智能之配置环境教程二:在Anaconda中创建虚拟环境安装GPU版本的Pytorch及torchvision并在VsCode中使用虚拟环境 作者介绍一. 查看自己电脑的CUDA版本1.1 方式一1.2 方式二 二. 下载安装CUDA三. 查看环境变量四. 创建虚拟环境4.1 使用指令创建虚拟环境4.2 查看Anc…

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点

【刷题之路Ⅱ】LeetCode 24. 两两交换链表中的节点 一、题目描述解题1、方法1——递归1.1、思路分析1.2、代码实现 2、方法2——迭代2.1、思路分析2.2、代码实现 3、方法3——交替的尾插3.1、思路分析3.2、代码实现 一、题目描述 原题连接: 24. 两两交换链表中的节…

人群计数经典方法Density Map Estimation,密度图估计

(3)Density Map Estimation(主流) 这是crowd counting的主流方法 传统方法不好在哪里?object detection-based method和regression-based method无法从图像中提取更抽象的有助于完成人群计数任务的语义特征 概况&…

asp.net个人信息管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net个人信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 asp.net个人信息管理系统VS开发s…

第七章 单行函数

MySQL系列文章目录 http://t.csdn.cn/YTPe9 文章目录 MySQL系列文章目录前言一、函数的理解1、 什么是函数2 、不同DBMS函数的差异3 、MySQL的内置函数及分类 二、 数值函数1 、基本函数2、 角度与弧度互换函数3、 三角函数4、 指数与对数5、进制间的转换 三、字符串函数四、日…

音视频八股文(8)-- h264 AnnexB

NALU(Network Abstract Layer Unit) ⾳视频编码在流媒体和⽹络领域占有重要地位;流媒体编解码流程⼤致如下图所示: H264简介 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264&#xff0c…

Docker快速创建一个单机版的Jenkins实例

目录 一、创建 Jenkins 实例 二、Pipeline 项目 三、总结 谈到 CI/CD,那便少不了这里面的佼佼者 Jenkins,正如 Jenkins 官网说的一样:“Build great things at any scale”,构建伟大,无所不能! 话不多说…

常用传感器-温湿度传感器SHT30

SHT30温湿度传感器 基本信息 工作电压:2.4V-5.5V 通讯协议:IIC 湿度测量范围:0-100 温度测量范围:-40-125 引脚 VIN:电源正极GND:电源负极SCL:数据线SDA:数据线 操作 1.加载库…

digiKam 8.0发布,带来了许多新的功能和改进

导读digiKam 8.0开源、跨平台、免费的专业照片管理软件现在可以下载,这是一个重大更新,带来了许多新的功能和改进。 digiKam 8.0最大的变化是,该软件被移植到最新的Qt 6开源应用框架,以获得更现代和面向未来的体验。然而&#xff…

MATLAB矩阵运算

文章目录 前言一、矩阵的输入与结构操作1-1 矩阵输入1-2 矩阵扩充(1)扩充行(2)扩充列(3)其他命令(4)矩阵的修改和元素的删除 1-3 特殊矩阵生成 二、矩阵的计算2-1 、矩阵的基本运算2…

详解时间复杂度和空间复杂度问题

前言:本来我并不认为时间复杂度和空间复杂的有多重要,只要日常会判断和分析算法的复杂度即可,但是,不论是在考研的数据结构与算法中,还是在日常的刷题中,我们都会见到,限制我们时间和空间复杂度…

RK3588平台开发系列讲解(进程篇)Linux中进程的一生

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux 系统中进程的一生二、Linux 系统中的进程树三、Linux 进程的分类四、进程优先级五、进程系统调用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 进程的相关知识。 一、Linux 系统…

vscode开发wdk

findwdk https://github.com/SergiusTheBest/FindWDK.git 拷贝FindWdk.cmake模块到下面路径中 CMake\share\cmake-3.22\Modules 注意定义系统变量或者修改下面路径,确保能找到wdk工具路径 构建项目 cmake中构建项目通过wdk_add_driver实现 wdk_add_driver(simp…

深度学习训练营之彩色图片分类2

深度学习训练营之彩色图片分类 原文链接环境介绍前置工作设置GPU 导入数据数据查看 构建CNN网络CNN网络的简单介绍代码 进行编译模型训练正式训练 结果可视化使用准确度和损失值进行结果的优良进行分析 原文链接 🍨 本文为🔗365天深度学习训练营 中的学习…

【源码解析】SpringBoot日志系统源码分析

LoggingApplicationListener 日志组件的处理是LoggingApplicationListener实现的。LoggingApplicationListener#onApplicationEvent&#xff0c;监听事件。如果实现接口GenericApplicationListener&#xff0c;可以允许适配事件类型。 private static final Class<?>[]…

升级OpenAi/ChatGPT为收费账号绑定API全过程

前言 自从4月1日开始&#xff0c;第一批用户的API就已经过期了&#xff0c;大家可能重新注册新的账号来免费获取ChatGPT/OpenAi的API额度&#xff0c;需要没有18美元额度&#xff0c;但5美元也能调用不少了&#xff0c;一个账号不够&#xff0c;两个&#xff0c;三个&#xff…

NetSuite 负库存控制功能包

目录 1. 前言 2. 功能说明 2.1概述 2.2控制逻辑说明 3. 安装 4. 设置 4.1角色设置 4.2参数设置 4.3负库存追踪记录设置 5. 视频链接 1. 前言 在NetSuite的项目实践中&#xff0c;NetSuite既有功能未能解决用户所面临的负库存问题。参看NetSuite知识会的前期文章&…

《Netty》从零开始学netty源码(四十六)之PooledByteBuf

PooledByteBuf Netty中一大块内存块PoolChunk默认大小为4MB&#xff0c;为了尽可能充分利用内存会将它切成很多块PooledByteBuf&#xff0c;PooledByteBuf的类关系图如下&#xff1a; PooledUnsafeDirectByteBuf与PooledUnsafeHeapByteBuf直接暴露对象的底层地址。 PooledByt…

连续三年增长,徐福记为什么越战越勇?

30年&#xff0c;一个零食品牌能发生什么变化&#xff1f;对徐福记来说&#xff0c;这是一场漫长的拉力赛。 这个过程&#xff0c;是研究消费者喜好变迁的过程&#xff0c;是孜孜不倦创新原料、产品、生产工艺和先进技术的过程&#xff0c;更是徐福记证明自身品牌价值的过程—…