当前位置: 首页 > news >正文

CANoe中使用CAPL函数接口调用Vflash文件

  • 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
  • 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
  • 🍅 玩转CANoe,博客目录大全,点击跳转👉

在这里插入图片描述

  • CAPL中集成了下面那么多调用vFlash的相关函数,其实实际用到的,可能就三五个函数

  • 使用这些函数接口必须要在测试模块里面加载VFLASHNODELAYER.DLL
    在这里插入图片描述

  • Vector官方有Demo可以学习: C:\Users\Public\Documents\Vector\vFlash\8\Examples\vFlash with CANoe\vFlashViaNodeLayer

  • 打开之后,CANoe和Vflash的通道都配置一样(这个工程需要真实总线环境,simulation不行)

在这里插入图片描述

  • 直接运行测试用例,可以看到Trace有数据,测试pass

在这里插入图片描述

  • 为什么即使没接真实的件,他也能有报文和刷写呢?因为simulation中它模拟节点做了应答
    在这里插入图片描述
  • Demo中的测试用例呢,就调用了"vFlash\Utilities.cin"中的 TestWaitForvFlashPackReprogrammed函数就完成了刷写

在这里插入图片描述

  • 再看下TestWaitForvFlashPackReprogrammed函数按照下面步骤完成的刷写
  • TestWaitForvFlashInitialized:初始化vFlash
  • TestWaitForvFlashProjectLoaded :加载.vflashPack工程
  • TestWaitForvFlashProjectLoaded :开始刷写
  • TestWaitForvFlashProjectUnloaded:卸载工程文件
  • TestWaitForvFlashDeinitialized:xxx
// Performs all necessary steps to reprogram the passed vFlashPack
// This function will wait until reprogramming has completed (it cannot be used in a simulation node)
enum vFlashStatusCode TestWaitForvFlashPackReprogrammed(char flashpack[])
{
// Test functions are only available in test modules!
#if TEST_NODEenum vFlashStatusCode lastStatusCode;enum vFlashStatusCode resultCode;char errorText[gkMaxErrorTextLength];int hasProjectLoaded = 1;if (!ProcessPathName(flashpack)) {snprintf(errorText, gkMaxErrorTextLength, "FATAL ERROR: No path to flashpack given!");write(errorText);   TestStepFail("TestWaitForvFlashInitialized", errorText);return FR_FileNotFound; }//----- Initialize vFlash Library -----lastStatusCode = resultCode = (enum vFlashStatusCode) TestWaitForvFlashInitialized();if (lastStatusCode != Success){TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash initialization error: %s", errorText);write(errorText);TestStepFail("TestWaitForvFlashInitialized", errorText);return resultCode;}else{TestStepPass("TestWaitForvFlashInitialized", "vFlash initialized successfully");}// from here on, return statements are not possible, because we have to call the "teardown" methods as well!// ==> how much complicated want we to be...//----- Load Project ----lastStatusCode = resultCode = (enum vFlashStatusCode) TestWaitForvFlashProjectLoaded(_gFlashpack);if (lastStatusCode != Success){hasProjectLoaded = 0;TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash load project error: %s", errorText);write(errorText);TestStepFail("TestWaitForvFlashProjectLoaded", errorText);}else{TestStepPass("TestWaitForvFlashProjectLoaded", "Successfully loaded project: %s", _gFlashpack);}//----- Activate Network// Activation of this function call is only required in case of flashing a FlexRay ECU // and vFlash has to do Network Managementif (lastStatusCode == Success){lastStatusCode = resultCode = (enum vFlashStatusCode) TestWaitForvFlashNetworkActivated();if (lastStatusCode != Success){TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash activate network error: %s", errorText);TestStepFail("TestWaitForvFlashNetworkActivated", errorText);write(errorText);}else{TestStepPass("TestWaitForvFlashNetworkActivated", "Network activated successfully");}}//----- Start Reprogramming ----if (lastStatusCode == Success){lastStatusCode = resultCode = (enum vFlashStatusCode) TestWaitForvFlashReprogrammed();if (lastStatusCode != Success){TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash reprogramming error: %s", errorText);TestStepFail("TestWaitForvFlashReprogrammed", errorText);write(errorText);}else{TestStepPass("TestWaitForvFlashReprogrammed", "ECU reprogrammed successful");}}//----- Unload Project ----if (hasProjectLoaded){lastStatusCode = (enum vFlashStatusCode) TestWaitForvFlashProjectUnloaded();if (lastStatusCode != Success){    TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash unload project error: %s", errorText);TestStepFail("TestWaitForvFlashProjectUnloaded", errorText);write(errorText);}else{TestStepPass("TestWaitForvFlashProjectUnloaded", "Project unloaded successfully");}   }//----- Deinitialize vFlash Library ----lastStatusCode = (enum vFlashStatusCode) TestWaitForvFlashDeinitialized();if (lastStatusCode != Success){TestWaitForvFlashLastErrorMessage(errorText, 1024);snprintf(errorText, gkMaxErrorTextLength, "vFlash deinitialization error: %s", errorText);TestStepFail("TestWaitForvFlashDeinitialized", errorText);write(errorText);}else{TestStepPass("TestWaitForvFlashDeinitialized", "vFlash deinitialized successfully");}return resultCode; // last result is of TestWaitForvFlashReprogrammed; result of Unload/Deinitialize ignored
#else // simulation nodewrite( "ERROR: the function TestWaitForvFlashPackReprogrammed is only available in a test module!");return TestFunctionInSimulationCalled;
#endif // TEST_NODE
}
  • 如果想要刷写自己的vFlash文件,简单的话就是把 gFlashpack给个自己文件的路径即可;想要集成在自己工程中用的话,要引用 #include "vFlash\Utilities.cin",调用 TestWaitForvFlashPackReprogrammed函数即可。

  • 自己调用的时候,别忘了要在测试模块中加载下面的DLL
    在这里插入图片描述

在这里插入图片描述

🌎总结

23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18

相关文章:

CANoe中使用CAPL函数接口调用Vflash文件

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...

三天吃透计算机网络面试八股文

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

shp数据添加wkt字段并导出成csv,leaflet绘制使用

准备的东西:软件2跟软件3具体怎么有这些软件需要自行百度postgresql postgis相关 1.shp数据 2.软件2 3.软件3 1.数据导入 首先你得有软件2的数据库,即postgresql数据库,然后通过postgis的插件进行连接并导入数据, 导入数据…...

Java——二叉树的最近公共祖先及二叉搜索树介绍

目录 二叉树的最近公共祖先 题目 思路一:如果给定的是一颗二叉搜索树, 思路二:假设是孩子双亲表示法 二叉搜索树 定义Node类 查找 删除 插入 二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百…...

Stable Diffusion加chilloutmixni真人图片生成模型,AI绘图杀疯了

上期图文教程,我们分享过AI绘图大模型Stable Diffusion以及中文版本文心AI绘画大模型的基础知识以及代码实现,截至到目前为止。Stable Diffusion模型已经更新到了V2.1版本,其文生图大模型也越来越火,其在2022年底,由AI绘制的图片被荣为国际大奖,让大家对AI绘画大模型也越…...

Matplotlib 绘图实用大全

本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…...

MyBatis源码用了哪些设计模式?

MyBatis源码用了哪些设计模式?前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中,使用了大量的设计模式对工程架…...

【16.整数转罗马数字】

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...

前端小技巧

1.html 1.1 网站自动刷新 应用场景: 网页定期自动刷新(现在基本淘汰了,采用ajax);自动跳转到指定页面,这个自动跳转的好处就是不需要JS调用,属于纯html网页自动跳转 v7-网站自动刷新 你可以…...

Servlet2.0

文章目录更方便的部署方式安装插件使用插件验证程序常见访问出错的解决方案404错误405错误500错误空白页面无法访问此网站在文章 TomcatServlet初识中,我们通过七个大的步骤才可以完成一个简单的Servlet程序,这个过程无疑是非常繁琐的,那么我…...

【c++】继承

目录 一、继承的表现 子类对父类成员的访问权限 二、父类与子类之间的相互赋值 三、继承的作用域 如果是父类和子类构成隐藏呢? 四、子类的成员函数怎么写 1.default构造函数 2.析构函数 所以析构函数不需要我们显式调用。 五、继承与友元函数 六、继承与静…...

minio安装配置和使用(二)客户端安装

安装minio客户端mcli 命令如下: dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20230128202938.0.0.x86_64.rpm 安装完成,在/usr/local/bin/下新增了mcli命令 mcli是对minio进行管理的命令。功能丰富, 基本格式…...

【如何使用Arduino设置GRBL和控制CNC机床】

【如何使用Arduino设置GRBL和控制CNC机床】 前言1. 什么是GRBL?2. 所需硬件3. 如何安装GRBL4. GRBL 配置5. GRBL 控制器5.1 如何使用通用 G 代码发送器5.2 波特率5.3 电机方向5.4 步进比例系数5.5 限位开关5.6 数控机床的归位设置6. 结论前言 如果您正在考虑或正在制造自己的…...

项目测试——博客系统

文章目录项目测试——博客系统项目简介项目功能测试计划web自动化测试1. 测试用例2.web自动化测试说明项目测试——博客系统 项目简介 博客系统主要分为8大模块,分别是注册页,登录页,编辑页,修改页,个人主页&#xf…...

【C习题】经典数组与指针面试题(万字)

文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明:需熟记以下三个规则。 规则1.&数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部,计算的是整个数组的大小。 说明:这里的单…...

【ArcGIS Pro二次开发】(13):ProWindow的用法

ProWindow是ArcGIS Pro SDK中的一个WPF控件,具有以下特点: 可扩展性:ProWindow提供了丰富的API和样式,可以轻松地扩展和自定义ArcGIS Pro应用程序的UI。 可定制性:ProWindow支持多种UI控件和布局方式,可以…...

HTML/CSS/JS 基本语法

前端一、HTNL1、文件结构2、文本标签&#xff08;1&#xff09;块元素&#xff1a;div&#xff08;2&#xff09;行内元素&#xff1a;span&#xff08;3&#xff09;格式标签3、图片、音频、视频&#xff08;1&#xff09;图片&#xff08;2&#xff09;音频< audio >&a…...

对于从事芯片行业的人来说,有哪些知识是需要储备的?

近两年芯片行业大火&#xff0c;不少同学想要转行&#xff0c;却不知道该如何下手&#xff0c;需要学习哪些基础知识&#xff0c;下面就来看看资深工程师怎么说&#xff1f; 随着工艺的发展&#xff0c;芯片肯定是尺寸越来越小&#xff0c;至于小到什么样的程度是极限&#xf…...

测试场景设计

测试场景设计 又叫做场景法。其实对于场景法是测试用例中面临最多的&#xff0c;但是这种模式不是很容易总结&#xff0c;有时候是基于经验&#xff0c;有时候是我们对系统的了解。所以在这种情况下&#xff0c;我们强硬的用场景法对其进行规范。 场景法原理 现在的软件几乎…...

《重构》增强代码可读性

文章目录重构原则何为重构为何重构何时重构重构会影响性能吗实例原始类进行重构分解statements方法提取函数搬移函数提炼“积分计算”功能去除临时变量&#xff08;以查询取代临时变量&#xff09;运用多态取代与价格相关的条件逻辑代码迁移Movie类Price类 状态模式搬移函数以多…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...