vTESTstudio系列12--vTESTstudio中的动态函数库介绍2

在上期的文章(vTESTstudio系列11--vTESTstudio中的动态函数库介绍1)中,我们详细介绍了osek_tp.dll的接口,本章开始给大家介绍如何通过osek_tp.dll的接口去发送诊断指令,Let‘s Go!!!

目录

1. CanTp发送数据的函数:

1.1 CanTpSetTxIdentifier的介绍:

1.2 CanTpSendData的介绍:

2. 自定义CanTp的发送函数:

2.1 初始化CANTP的函数:

2.2 诊断请求函数:

2.3 编辑测试用例:

2.4 测试结果:


1. CanTp发送数据的函数:

1.1 CanTpSetTxIdentifier的介绍:

CanTpSetTxIdentifier函数的功能是设置诊断请求的报文ID,入参有两个,一个是CanTpCreateConnection的返回值,另一个是需要输入的诊断请求报文的ID。

1.2 CanTpSendData的介绍:

CanTpSendData函数的功能是发送诊断请求的实际数据和实际长度。

2. 自定义CanTp的发送函数:

为了方便后续的脚本开发,我们先将一些公用的变量设置成global变量去定义,如下所示:

variables
{byte crc_temp;byte crc_value; //for Diagnostic test parameterlong handle_xml;int g_rxId = 0x691;int g_txId_PhysicalAddr = 0x791;int g_txId_FunctionalAddr = 0x7FF;byte RequestData[8194];byte ResponseData[8194];}

2.1 初始化CANTP的函数:

首先我们需要定义一个初始化配置CANTPHandle的函数,如下代码所示:

void InitializeCanTpHandle()
{CanTpCloseConnection(handle_xml);handle_xml = CanTpCreateConnection(0);CanTpSetRxIdentifier(handle_xml,g_rxId);  CanTpSetMaxCANFDFrameLength(handle_xml, 64);CanTpSetBitRateSwitch(handle_xml, 1);CanTpSetSTmin(handle_xml, 0x14);CanTpSetBlockSize(handle_xml, 8);  
}

可以发现上述代码其实就是在定义上篇文章中介绍的osek_tp.dll的接口.

2.2 诊断请求函数:

然后我们开始发送一个最简单的指令1001,我们这边写了一个简单的发送诊断请求的函数:

export testfunction SendDiagRequest()
{//initialRequestData[0] = 0x10;RequestData[1] = 0x01;InitializeCanTpHandle();CanTpSetTxIdentifier(handle_xml,g_txId_PhysicalAddr);CanTpSendData(handle_xml,RequestData,2);testStepPass("INFO","Diagnostic Request send successfully!!!");
}

上述代码我们强制将RequestData数组的前两个数值分别设置成0x10,0x01;

然后设置用物理寻址去发送诊断请求;

通过CanTpSendData这个函数将诊断数据发送出去;

最后在测试报告中添加发送诊断请求成功的提示信息。

2.3 编辑测试用例:

我们在vTESTStudio中简单定义了一个测试用例,然后将我们定义的函数添加进去,编译生成测试用例:

2.4 测试结果:

将生成的Test.vtuexe加载到CANoe工程中去执行测试脚本。

测试报告如下:

可以发现我们在函数中添加发送诊断请求成功的提示信息在测试报告中得到了体现,也表明1001这个诊断请求发送出去了,然后我们在CANoe的Trace窗口去实际检查一下诊断报文:

可以发现Trace窗口能够看到ID为0x791的诊断请求报文,发送的内容就是1001,在时间戳上也可发现发送的诊断请求的时间与测试报告中的时间戳一致。

当然,我们也发现了发送完诊断请求后,ECU自动回复了这条诊断请求,那么如何处理这个诊断回复呢,我们下章开始介绍如何处理诊断回复,敬请期待!!!

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

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

相关文章

图表操作——图表保存为图片+多个图表批量保存为压缩包——js技能提升

使用场景: echarts图表:生成的柱状图/折线图/饼图等可以实现图表的导出,导出格式为一个图片。也可以支持多个图表同时导出为图片,以压缩包的形式下载下来。 下面介绍单个导出批量导出的具体用法: 1.单个导出功能——…

可信捐赠系统的设计与开发论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统可信捐赠系统信息管理难度大,容错率低&#x…

选对文档版本管理软件:10款工具详解

本篇文章中提到的工具包括:1.PingCode;2.Worktile;3.联想Filez;4.蓝凌云;5.阿里云盘;6.360亿方云;7.无忧企业文档;8.DocStar ECM;9.Dropbox Business;10.Shar…

数据库之心:MySQL 探索(一)mysql的安装和基本介绍

欢迎来到我们的MySQL博客!在这里,我们将深入探讨MySQL数据库系统的各个方面,包括基础知识、优化技巧、实践案例以及最新的行业趋势。 目录 前言 什么是数据库? 数据库产品 MySQL安装 解压 配置 添加环境变量 初始化MySQL …

Linux云计算 |【第二阶段】SHELL-DAY4

主要内容: grep、egrep的使用,基本/扩展正则、sed的使用(非交互、逐行处理、常用命令与选项) 补充:grep [-E]选项,表示允许使用扩展的正则表达式(同等于egrep) 一、grep 与 egrep 的…

基于深度学习的单目标跟踪系统

基于深度学习的单目标跟踪,效果吊打传统算法,3060显卡上达到实时,代码python和c两个版本都有。 基于深度学习的单目标跟踪系统是一种先进的计算机视觉技术,它可以实现实时的、高精度的目标跟踪。与传统的基于特征匹配或模板匹配的…

LED的使用寿命评估

一.前言 LED光源随着时间的推移,输出光功率会逐渐衰减。在某一时间点,当LED发出的光衰减到一定水平,就无法满足应用要求。因此,常遇见客户会索取产品中LED光源的使用寿命数据。那么怎样确认LED的使用寿命呢&#xff1…

MySQL5.6迁移到DM8

注意: MySQL 5.7 与 MySQL 8.0 的语法有所区别,本文档是将MySQL5.6迁移到DM8。 迁移前准备 源库 数据库信息 统计源端业务库要迁移的数据量、字符编码、归档保留等信息。 内容 说明 备注 数据库架构 单机 节点数 1 数据库版本 MySQL 5.6…

UE5 摄像机图像采集到材质 映射到 UI 和 物体表面

一.创建SceneCapture2D的组件 二.创建用于 映射的 贴图 三.将RenderTarget贴图放到SceneCapture2D的摄像机上Scene Capture的TextureTarget 四.这个时候的映射贴图,产生的材质可以直接。放到Plane上。 五,但是如果要用于UI,还需要更改SceneCapture2D的摄…

C语言基础(二十七)

1、位字段(Bit-fields)也是一种数据结构,允许在结构体(struct)或联合体(union)中定义其成员占用特定的位数。对于需要精确控制内存布局或处理硬件寄存器映射等场景非常有用。位字段使得开发者能…

WebRTC协议下的视频汇聚融合技术:EasyCVR视频技术构建高效视频交互体验

视频汇聚融合技术是指将来自不同源、不同格式、不同网络环境的视频流进行集中处理、整合和展示的技术。随着视频监控、远程会议、在线教育、直播娱乐等领域的快速发展,视频数据的规模急剧增长,对视频处理能力和效率提出了更高要求。视频汇聚融合技术通过…

GAMES202——作业3 Screen Space Ray Tracing

任务 为场景实现屏幕空间的全局光照效果 1.直接光照: 实现ssrFragmentShader中的EvalDiffuse(wi, wo, uv) 和EvalDirectionalLight(uv) 函数,并在 main 函数中实现直接光照的效果。 2.屏幕空间光线求交:实现RayMarch(ori, dir, out hitPos) …

C语言初阶 --- 数据在内存中的存储

🎈 个人主页👉:tbRNA-CSDN博客 💯 个人简介:在校大学生一枚💋. 😍 希望我的文章对大家有着不一样的帮助,欢迎大家关注我,感谢大家的多多支持! 🎉 …

前端面试题每日一练,测测你对JavaScript对象继承和 Object.entries() 的理解

今天的挑战题目涉及到JavaScript中的原型链 (prototype chain) 和 Object.entries() 方法的使用。我们将通过一个对象继承的例子来探索如何使用 Object.entries() 获取对象的自身可枚举属性,并进行处理。让我们一起分析这段代码,看看它会输出什么以及为什…

碎碎念之Android中CPU架构arm-v8a、arm-v7a、x86

0 碎碎念 之前写博客都是为了复习基础知识,不过好像也忘得很快hh。 以后估计会写点感兴趣的自己碎碎念,缓解下emo的心情。(不像之前的博客,这些博客不准备复现也不贴代码所以不一定对, 仅供个人参考 ) 现在…

JMeter Plugins之内网插件问题解决

JMeter Plugins之内网插件问题解决 背景 在我司内部进行JMeter工具进行性能脚本开发时,为了提高测试效率,我们会用到部分JMeter提供的插件,但是在我司内网的情况下,我们如果直接点击JMeter界面右上角的插件按钮 弹出来的JMeter…

Python-MNE-源空间和正模型07:修复BEM和头表面

有时在创建BEM模型时,由于可能出现的一系列问题(例如,表面之间的交叉),表面需要手动校正。在这里,我们将看到如何通过将表面导出到3D建模程序blender,编辑它们,并重新导入它们来实现这一点。我们还将给出一…

图形化编程系统学习10

项目需求: 点击绿旗,可以使用键盘控制小兔子在地图上移动,收集食物,但只能在黄色道路上移动。 食物碰到小兔子会变大后隐藏,并发出声音。 收集完所有食物,回到温暖的小窝 。 思路解析 1、添加背景和角色…

事半功倍:利用增强现实提高工作效率

人们通常认为增强现实只是游戏中的一个强大的功能,然而,研究表明,增强现实在提高工厂的效率和生产力方面也发挥着重要作用。不管增强现实、虚拟现实还是混合现实都能很好地模拟工厂的工作场景,这对于培训、运营、安全和研发方面的…

OpenCV小练习:人脸检测

OpenCV自带人脸检测模型,拿来就能用。所以“人脸检测”这个任务对于OpenCV而言真是太简单了——感叹一下:OpenCV太强大了!相关的介绍文章在网上可以搜到很多,原本我觉得没必要再写一篇了。结果我在写练习代码的时候,还…