Can调试工具源码

Can调试工具源码


CANTool通用测试软件是一个专门用来socket can接口进行测试的软件工具,此软件操作简单,容易上手,通过运用此软件可以非常方便的对linux系统的can接口进行测试,从而熟悉can接口的使用方法,并且此为源码,还带有过滤自定义,开启和关闭功能,此源码可以直接运行进行调试。

部分代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "can_control.h"
#include <unistd.h>using namespace std;QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();void SlotRecvData(struct can_frame *frame);void on_ClearDataButton_clicked();private:Ui::MainWindow *ui;Can_Control*pcan0;QString currentCan;       
};
#endif // MAINWINDOW_H
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow), pcan0(nullptr), currentCan("can0") 
{ui->setupUi(this);setWindowTitle(tr("Can调试工具1.0"));ui->recvTextEdit->setPlaceholderText(tr("帧ID 长度 数据"));ui->sendTextEdit->setText("123 11 22 33 44 55 66 77 88");QStringList canlist = QStringList()<<"can0"<<"can1";ui->CanBox->addItems(canlist);// 使用系统调用函数运行以上命令,也可以自行在终端中运行system(ip_cmd_can0_down);system(ip_cmd_set_can0_params); // 设置参数system(ip_cmd_can0_up);  // 开启can0接口pcan0 = new Can_Control(this);pcan0->socket_connect(currentCan.toLatin1().data());connect(pcan0, &Can_Control::SigSendData, this, &MainWindow::SlotRecvData);connect(ui->CanBox, &QComboBox::currentTextChanged, [&](QString txt){if(currentCan != txt){pcan0->SetThreadStatus(true);while(!pcan0->isFinished());currentCan = txt;QString setparam;setparam = QString("ifconfig %1 down").arg(currentCan);system(setparam.toLatin1().data());setparam = QString("ip link set %1 type can bitrate 1000000 triple-sampling on").arg(currentCan);system(setparam.toLatin1().data());setparam = QString("ifconfig %1 up").arg(currentCan);system(setparam.toLatin1().data());pcan0->socket_connect(currentCan.toLatin1().data());pcan0->SetThreadStatus(false);pcan0->start();}});pcan0->start();}MainWindow::~MainWindow()
{pcan0->SetThreadStatus(true);while(!pcan0->isFinished());delete ui;
}void MainWindow::on_pushButton_clicked()
{// Errormsg_Dlg *errordlg=new Errormsg_Dlg();// errordlg->show();QString text = ui->sendTextEdit->toPlainText();QStringList strlist = text.split(' ');struct can_frame frame; //要发送的bufferbool ok;frame.can_id = strlist[0].toUInt(&ok, 16);frame.can_dlc = 8;for(int i = 0; i < 8; i++){frame.data[i] = (uint8_t)strlist[i+1].toUInt(&ok, 16);}//const byte* data, const int count// __u8  send_frame_data[8] = {0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};// memcpy(frame[0].data, send_frame_data, 8);pcan0->send_frame(&frame);//}void MainWindow::SlotRecvData(struct can_frame *frame)
{QString buffer;QByteArray temp((const char*)(frame->data),8);buffer = temp.toHex(' ');QString content = QString("%1 [%2] %3").arg(frame->can_id, 3, 16, QLatin1Char('0')).arg(frame->can_dlc, 2, 10, QLatin1Char('0')).arg(buffer);ui->recvTextEdit->insertPlainText(content+"\n");
}void MainWindow::on_ClearDataButton_clicked()
{ui->recvTextEdit->clear();
}

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

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

相关文章

C# CAD界面-自定义工具栏(三)

运行环境 vs2022 c# cad2016 调试成功 一、引用 二、开发代码进行详细的说明 初始化与获取AutoCAD核心对象&#xff1a; Database db HostApplicationServices.WorkingDatabase;&#xff1a;这行代码获取当前工作中的AutoCAD数据库对象。在AutoCAD中&#xff0c;所有图形数…

PS一键磨皮插件Delicious Retouch for mac中文 支持PS2024

Delicious Retouch for Mac是一款优秀的Photoshop插件&#xff0c;专注于人像修饰。以下是该插件的一些主要特点和功能&#xff1a; 软件下载&#xff1a;Delicious Retouch for mac中文 支持PS2024 人像修饰工具&#xff1a;Delicious Retouch专注于人像修饰&#xff0c;提供了…

PyTorch 2.2 中文官方教程(十一)

使用 PyTorch C 前端 原文&#xff1a;pytorch.org/tutorials/advanced/cpp_frontend.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 PyTorch C 前端是 PyTorch 机器学习框架的纯 C 接口。虽然 PyTorch 的主要接口自然是 Python&#xff0c;但这个 Python API 坐…

ML:2-2-3 多分类问题multicalss

文章目录 1. 多分类问题的定义2. softmax3. 神经网络的softmax输出 【吴恩达机器学习65-67】 1. 多分类问题的定义 classification问题可能的output大于2种。 multiclass的预测图像可能是右侧这样的。 2. softmax softmax regression算法是logistic regression的泛化&#xf…

python Flask 写一个简易的 web 端上传文件程序 (附demo)

python Flask 写一个简易的 web 端上传文件程序 &#xff08;附demo&#xff09; 需求介绍核心代码&#xff1a; 文件结构前端文件后端文件 完整代码演示 需求 在当今数字化时代&#xff0c;文件上传需求日益普遍。无论是个人还是企业&#xff0c;都可能需要实现文件上传功能。…

jmeter-问题一:关于线程组,线程数,用户数详解

文章目录 jmeter参数介绍1.线程数2.准备时长(Ramp-up)3.循环次数4.same user on each iteratio5.调度器 场景一&#xff1a;当你的线程组中线程数为1,循环为1场景二&#xff1a;当你的线程组中线程数为2&#xff0c;循环为1场景三&#xff1a;当你的线程组中线程数为1&#xff…

【C#】Json转资源并加载

Json文件如下 右键修改json文件属性 【代码】读取Json文件内容 string sTemplate string.Empty; Assembly assembly Assembly.GetExecutingAssembly(); string resourceName assembly.GetName().Name.ToString() ".Json.test.json"; using (Stream stream asse…

IP代理類型詳解 | 基於網路協議、匿名性、IP來源

線上代理、HTTP代理、Socks4/5代理、動態住宅IP代理、專用代理、共用代理、開放代理、匿名代理、反向代理……是否令你感到困惑&#xff1f;閱讀本片文章瞭解所有。可以將代理視為你與所需網站Web伺服器之間的中間人。它接收你的請求&#xff0c;然後將請求發送到Web伺服器。然…

【GAMES101】Lecture 15 全局光照

本节继承上一节的难度并继续加深&#xff0c;讲这个BRDF&#xff0c;然后理解反射方程和渲染方程&#xff0c;最终实现全局光照&#xff0c;以下内容很抽象……如果想要深入理解建议到隔壁基于物理着色&#xff1a;BRDF - 知乎 (zhihu.com)或者多看几遍视频&#xff0c;我也是回…

【01】C++入门

文章目录 Ⅰ 命名空间1. 命名空间域的产生2. 命名空间域的定义3. 命名空间域的使用 Ⅱ 缺省参数1. 缺省的概念2. 缺省的分类3. 声明和定义不能同时存在缺省参数 Ⅲ 函数重载1. 函数重载概念2. 编译器如何实现函数重载 Ⅳ 引用1. 引用的概念2. 引用的特性3. 引用的使用场景4. 引…

P8706 [蓝桥杯 2020 省 AB1] 解码--2024蓝桥杯冲刺省一

点击跳转例题 模拟即可 #include <bits/stdc.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl \n #define LL __int128using namespace std;const int N2e610,M1e310,mod998244353,INF0x3f3f3f3f;int a[N],b[N],c[N],pre[N];sign…

力扣热门100题刷题笔记 - 5.最长回文子串

力扣热门100题 - 5.最长回文子串 题目链接&#xff1a;5. 最长回文子串 题目描述&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。示例&#xff1a; 输入&#xff1a;s "…

《C++ Primer Plus》《2、开始学习C++》

文章目录 0 前言&#xff1a;1 进入C1.1 main()函数1.2 C注释1.3 预处理器和iostream1.4 头文件名1.5 名称空间1.6 使用cout进行C输出1.7 C源代码的格式化 2 C语句2.1 声明语句和变量2.2 赋值语句2.3 cout语句 3 其他C语句3.1使用cin3.2 使用cout进行拼接3.3 类简介 4 函数4.1 …

SSL证书的验证过程

HTTPS是工作于SSL层之上的HTTP协议&#xff0c;SSL&#xff08;安全套接层&#xff09;工作于TCP层之上&#xff0c;向应用层提供了两个基本安全服务&#xff1a;认证和保密。SSL有三个子协议&#xff1a;握手协议&#xff0c;记录协议和警报协议。其中握手协议实现服务器与客户…

远程桌面时连接不上远程计算机是什么问题

在服务器上搭建网络程序时&#xff0c;我们经常会有需要远程连接上服务器进行相关操作&#xff0c;有些用户在远程桌面的时候&#xff0c;有时会有遇上无法连接到远程计算机的情况。 很多用户都曾遇到在远程桌面时出现“未启用对服务器的远程访问”、“远程计算机已关闭”、“…

HBase相关面试准备问题

为什么选择HBase 1、海量存储 Hbase适合存储PB级别的海量数据&#xff0c;在PB级别的数&#xff0c;能在几十到几百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性&#xff0c;才为海量数据的存储提供了便利。 2、列式存储 这里的列式存储其实说的…

面试经典题---76.最小覆盖子串

76.最小覆盖子串 我的解法&#xff1a; 滑动窗口&#xff1a; 使用map1记录子串t中各字符的出现频数&#xff0c;map2记录子串s的滑动窗口[left, right]中各字符的出现频数&#xff1b;当s[right]字符是所需字符时&#xff0c;即t中该字符数量大于等于s的滑动窗口中这一字符的…

技术栈面试综合整理

Git命令详解 设计模式看了又忘&#xff0c;忘了又看 Linux命令 Java集合Map Java基础 JVM面试题 JVM原理最全、清晰、通俗讲解&#xff0c;五天40小时吐血整理_小爷欣欣-CSDN博客_jvm原理 IO 计算机网络 计算机网络2 jsp 多线程 多线程2 大厂 JAVA 高频面试题 Ja…

Mocaverse NFT 概览与数据分析

作者&#xff1a;stellafootprint.network 编译&#xff1a;mingfootprint.network 数据源&#xff1a;Mocaverse NFT Collection Dashboard Mocaverse 是 Animoca Brands 推出的专属 NFT&#xff08;非同质化代币&#xff09;系列&#xff0c;包含 8,888 个独特的 "M…

3D DRAM引领存储变革,重塑智能时代计算格局

3D DRAM作为一种应对DRAM技术挑战的解决方案&#xff0c;正逐渐被视为未来内存市场的关键发展方向。与3D NAND类似&#xff0c;3D DRAM采用了立体堆叠技术来突破传统二维平面架构的局限。 在传统DRAM中&#xff0c;存储单元由一个晶体管和一个电容器组成&#xff0c;晶体管负责…