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

news2024/11/15 16:25:27

在上期的文章(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 parameter
  long 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()
{
  //initial
  RequestData[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.coloradmin.cn/o/2088773.html

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

相关文章

插件千兆网络变压器72PIN应用图片和设计H87202D

华强盛电子导读:前面199中间2643后面0038 千兆4口网络变压器是一种常用于网络通信领域的电子元件,它可以将高频率的信号进行隔离和滤波,保护网络设备免受电磁干扰,同时也能确保信号的稳定传输。这种网络变压器通常具有多个端口&am…

使用tyarn下载依赖出现: 无法加载文件 D:\environment_software\nvm_node\tyarn.ps1,因为在此系统上禁止运行脚本。

使用tyarn下载依赖时出现: 无法加载文件 D:\environment_software\nvm_node\tyarn.ps1,因为在此系统上禁止运行脚本。 表示window不能执行ps1文件,可以通过设置命令运行执行ps1文件(PowerShell)。输入命令查看配置&am…

程序设计—智慧城市应急物资配送系统开发—车辆调度 项目源码36262

摘 要 在智慧城市建设的浪潮中,应急物资配送系统的车辆调度模块扮演着举足轻重的角色。该模块通过集成先进的信息技术和管理理念,实现了对配送地区、前置仓、车辆资源以及调度信息的全面管理和优化,从而确保在紧急情况下能够迅速、准确地将应…

自动生成文章的软件,提高你写文章的效率

对于每个写作人员而言,如果在写作中有一个工具可以协助提高工作效率,想必大家是都乐意接受的,那么今天小编就在本文中为大家分享一个好用的自动生成文章的软件,它可以在大家没有写作灵感时用来自动生成文章用,同时也可…

JVM中篇:字节码与类的加载篇-04-再谈类的加载器

笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 文章目录 1. 概述1.1. 大厂面试题1.2. 类加载器的分类1.3. 类加载器的必要性1.4. 命名空间1.5. 类加载机制的基本特征1.6. 类加载器之间的关系 2…

视频结构化从入门到精通——图像算法类型介绍

视频结构化主要图像算法 1 认识“数组、矩阵和张量” 1.1 什么是维度 在图像算法中,“维度”这个概念非常重要,它描述了数据的结构和形状。在不同的上下文中,维度可能有不同的含义,但总体来说,它们都与数据的排列方式…

【已解决】git@github.com: Permission denied (publickey).处理git 无权限访问问题

解决思路 分析 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. 意译:权限拒绝(公开密钥),后果:无法读远程仓库。 人话:GitHub设置里面的公钥没有配置或者…

关于武汉芯景科技有限公司的实时时钟芯片XJ8339开发指南(兼容DS1339)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.时钟功能 2.闹钟功能(两个闹钟) 3.振荡器停止控制 4.频率输出(1HZ、1.096KHZ、8.192KHZ、32.768KHZ) 5.振荡器停止检测 6.闹钟中断标志 7.涓流充电…

领英(LinkedIn)无法开发会员客户?一招教你轻松解决

经常会有外贸朋友问我,领英会员的客户要怎么开发,如果不开会员的就无法添加好友,查看信息等等,经过我的反复实践,今天给大家分享一个超级好用的开发领英会员的方法,不需要开领英会员一样可以轻松开发&#…

【网络安全】服务基础第一阶段——第六节:Windows系统管理基础---- DNS部署与安全

计算机智能识别并用IP地址定位,例如我们想要访问一个网页,其实是只能使用这个网页的IP地址,即四位的0~255来访问,但这一串数字难以记忆,于是就有了DNS,将难以记忆的数字转化为容易记忆的域名&am…

【栈】| 力扣高频题: 基本计算器二

🎗️ 主页:小夜时雨 🎗️专栏:算法题 🎗️如何活着,是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/basic-calculator-ii/description/ (可点击) 本道题是栈…

Docker 镜像导出与加载:从入门到精通

在容器化技术的世界中,Docker 镜像的导出与加载是开发与运维人员经常会用到的技能。本文将详细介绍如何导出 Docker 镜像为本地 tar 文件,并如何将其重新加载为 Docker 镜像,并分享一些操作中的小技巧与趣味总结。 一、Docker 镜像导出的秘…

Spring Security基于token的极简示例

1 引言 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,但是用起来有点复杂,为了便于学习理解,下面将用最简洁的配置和示例,展示整个流程。 2 代码 创建一个spring-security…

深入理解 XSS 漏洞:原理、危害与防范

在网络安全领域,跨站脚本攻击(Cross-Site Scripting,XSS)一直是一个备受关注的问题。XSS 漏洞的存在可能导致严重的安全后果,影响网站的正常运行和用户的信息安全。本文将深入探讨 XSS 漏洞的原理、危害以及有效的防范…

Mysql在服务器中的源码部署

1.在Linux下部署mysql 1.安装依赖性 [rootmysql1 ~]# dnf install cmake gcc-c openssl-devel \ ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64 2.下载并解压源码包 [rootmysql1 ~]# tar zxf mysql-boost-5.7.44.tar.gz [rootmysql1 ~]# cd…

讲述Navicat for MySQL定时备份数据库和数据恢复等功能

一. 设置计划任务定时备份数据库 计划任务就是让电脑在指定的时间内执行指定的动作,这些动作可以是一个程序,也可以是一个批处理,但是至少是可以运行的!其实再通俗一点也就是相当于你在那个时间里面进行了对某个东西对鼠标双击的…

Android 开发兼容性问题,TaskExecutionException等问题。

1、问题描述: kapt com.github.bumptech.glide:compiler:4.12.0 org.gradle.api.tasks.TaskExecutionException: Execution failed for task :app:kaptJlbDebugKotlin. 2、问题分析: 如果多人协作开发,从仓库 clone \ 下载的项目代码&…

6个装进手机里能涨知识的手机应用app,每个都有大学问!

分享6个装进手机里能涨知识的手机应用app,每个都有大学问! 1.TED 一个著名的演讲平台,它汇集了全球众多领域专家和思想领袖的精彩演讲。这些演讲覆盖了科技、艺术、设计、心理学、教育等多个领域,为观众提供了丰富的知识和启发性…

网络安全人才缺口大 每年相关专业毕业生仅8千余人

🤟 基于入门网络安全打造的:👉黑客&网络安全入门&进阶学习资源包 前言 “目前我国网络安全方面人才缺口仍然很大,相关专业每年本科、硕士、博士毕业生之和仅8000余人,而我国网民数量近7亿人。”网信办网络安全…

vue3 动态style[‘background‘] 图片url 打包后图片不显示没有打包到目录的为你

做了一个项目需求是 动态赋予多个div的背景图片,背景svg是后台数据中给的。刚开始显示不出来后来解决了(好用代码也如下可参考),后来又发现一个问题是 开发环境下可以正常显示,但部署后 svg图片不显示,排查…