vTESTstudio系列13--vTESTstudio中的动态函数库介绍3

news2024/12/26 0:02:33

在上一篇文章中(vTESTstudio系列12--vTESTstudio中的动态函数库介绍2),给大家介绍了如何通过osek_tp.dll的接口去发送诊断指令,本篇文章给大家介绍如何去处理诊断回复内容,确保实际的诊断回复是符合需求。Let's Go!!!

目录

1. CanTp接收数据的函数:

1.1 CanTp_ReceptionInd函数的介绍:

1.2 TestSupplyTextEvent函数的介绍:

1.3 TestWaitForTextEvent函数的介绍:

2.自定义CanTp的接收函数:

2.1 更新CanTp_ReceptionInd函数:

2.2 诊断回复函数:

2.3 编辑测试用例并执行测试:

2.4 有趣之处:


1. CanTp接收数据的函数:

1.1 CanTp_ReceptionInd函数的介绍:

CanTp_ReceptionInd这个函数的功能是通过建立CANTP连接的handle,当收到这个连接的数据时,这个函数就会被自动执行,同时将收到的数据存到data这个数组里面。

使用时我们可以直接使用上述图片的案例放到我们的编辑脚本中:

void CanTp_ReceptionInd( long connHandle, byte data[])
{
  write( "Received %d byte on connection %d: [%02x] ..." 
  , elcount( data), connHandle, data[0]);
}

1.2 TestSupplyTextEvent函数的介绍:

TestSupplyTextEvent函数的功能发出指定事件的信号,如上述案例中的错误帧事件信号("ErrorFrame occurred!"),这个文本文档是可以自己定义的。

1.3 TestWaitForTextEvent函数的介绍:

TestWaitForTextEvent函数的功能等待来自单个测试模块的指定文本事件的信号。同时,来自另一个测试模块的信号不会影响此等待指令。如果此事件未在aTimeout时间到期之前发生,则等待条件仍将得到解决,这个时候,该函数的返回值不等于1!!!

2.自定义CanTp的接收函数:

2.1 更新CanTp_ReceptionInd函数:

上述的代码可以看出,接收的诊断数据都放在了data的缓存区数组中,不利于我们做诊断回复的处理,我们在上篇文章的第2章节定义了许多变量,其中就有一个接收数据的数组byte ResponseData[8194];同时我们还要再定义一个golbal变量ResponseLength

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];
  long ResponseLength = 0;
}

然后我们再对上述的CanTp_ReceptionInd函数做一些处理:

void CanTp_ReceptionInd(long connHandle, byte data[])
{
  int i = 0;
  for(i = 0; i<elcount(data); i++)
  { 
    ResponseData[i] = data[i];
  }
  ResponseLength = elcount(data);
  TestSupplyTextEvent("TpMsgReceived");
}

2.2 诊断回复函数:

做完上述的预处理之后,我们开始编辑我们自定义的诊断回复函数:

export testfunction ReceiveDiagResponse()
{
  byte ExpectedResponse[8194] = {0x50,0x01,0x00,0x32,0x01,0xF4};
  long i =0;
  long result;

  result = TestWaitForTextEvent("TpMsgReceived", 5000);
  if(result ==1)
  {
      for (i = 0; i <= ResponseLength; i++)
    {
      if (ResponseData[i] == ExpectedResponse[i])
      {
        testStepPass("INFO","Diagnostic Response Data[%d] 0x%2x is equal to Expected Respsonse[%d] 0x%2x",i,ResponseData[i],i,ExpectedResponse[i]);
      }
      else
      {
        testStepFail("INFO","Diagnostic Response Data[%d] 0x%2x is not equal to Expected Respsonse[%d] 0x%2x Please Check!!!",i,ResponseData[i],i,ExpectedResponse[i]);
      }
    }
   }
  
}

上述代码中,我们在2.1中的CanTp_ReceptionInd接收完诊断回复后,向Test Module发送“TpMsgReceived”的文本,然后在自定义的诊断回复函数中去check这个“TpMsgReceived”的文本,当TestWaitForTextEvent的返回值为1时,表明所有的诊断回复数据都被接收到,这个时候我们开始处理这个诊断回复,将它与我们的期望结果一个byte一个byte的去比较,一致就pass,不一致就fail。

2.3 编辑测试用例并执行测试:

测试结果如下所示:

我们可以发现每个byte的数据都是对比一致的,我们再更改一个byte数据使得测试不通过:

可以发现Byte[4]的数据不一致,报告中也是红色的fail。

2.4 有趣之处:

当我把上述代码中的TestSupplyTextEvent和TestWaitForTextEvent两个函数注释掉,然后去重新执行测试脚本,报告如下:

有兴趣的朋友可以评论一下为什么会报错。

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

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

相关文章

Java项目: 基于SpringBoot+mysql在线文档管理系统(含源码+数据库+开题报告+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql在线文档管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…

VScode:前端开发中的常用快捷键和技巧

1.菜单栏 2.内容相关&#xff1a; 格式化文档 搜索文件名

海外盲盒APP系统开发,盲盒全球化发展机遇

盲盒全球化 近几年&#xff0c;盲盒在海外市场中迎来了爆发式增长&#xff0c;成为了一种新的潮流&#xff0c;拥有极高的人气&#xff0c;盲盒出海也已经成为了一个大风口&#xff0c;为我国盲盒市场带来了商业机遇&#xff01;在盲盒出海的热潮下&#xff0c;海外盲盒APP系统…

相亲交友系统开发中的关键要素

相亲交友系统开发旨在构建一个在线平台&#xff0c;专为单身人士设计&#xff0c;以促进他们寻找合适的伴侣或朋友。以下是该系统开发的关键要素&#xff1a; 用户账户管理&#xff1a;允许用户创建账户&#xff0c;进行注册和登录&#xff0c;以便他们能够建立个人资料并参与…

01:【铁头山羊stm32-HAL库】对GPIO的操作

对GPIO的操作 1、LED闪烁2、按键控制LED3、芯片调试接口被锁死导致无法下载程序 1、LED闪烁 使用的是STM32CubeMXKeilv5进行HAL库的开发。 开发的步骤&#xff1a; 第一步&#xff1a;新建工程 第二步&#xff1a;选择芯片 第三步&#xff1a;如下图哈哈 第四步&#xff1a;…

图像去噪实验:基于全变分(TV)模型的MATLAB实现

一、背景 全变分模型在图像处理领域中被广泛用于去除噪声&#xff0c;同时保持图像边缘的清晰度。 二、实验步骤 图像的读取、噪声添加、去噪处理以及结果的显示。 三、实验仿真结果图 四、结论 全变分模型是一种有效的图像去噪方法&#xff0c;它能够在去除噪声的同时&#…

shell脚本的变量与应用

Shell脚本是一种解释性语言&#xff0c;用于编写自动化任务和系统管理脚本。在Shell脚本中&#xff0c;变量用于存储和操作数据。变量在脚本中可以被赋值、读取和修改。 在shell脚本中&#xff0c;变量用于存储数据&#xff0c;可以是数字、字符串或其他类型的值。可以使用…

基于yolov8的道路病害道路裂缝道路坑洞检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的道路病害检测系统&#xff0c;特别是针对道路裂缝和坑洞的检测&#xff0c;是一种高效、准确的智能解决方案。该系统利用YOLOv8这一先进的深度学习算法&#xff0c;通过深度神经网络对图像进行特征提取和分类&#xff0c;实现对道路病害的实时检测和…

期权会不会爆仓?如果期权亏了,会亏到倒欠吗?!

今天带你了解期权会不会爆仓&#xff1f;如果期权亏了&#xff0c;会亏到倒欠吗&#xff1f;&#xff01;期权作为一种金融衍生工具&#xff0c;已经被广大的投资者所接受&#xff0c;并广泛地应用于风险管理等诸多领域。 期权会爆仓吗&#xff1f; 对于期权而言&#xff0c;…

杭州网站建设网页手机版

杭州作为中国的电子商务之都&#xff0c;网站建设在杭州可谓是异常繁荣。随着移动互联网的兴起&#xff0c;越来越多的企业开始注重网页的手机版建设&#xff0c;以满足用户在移动设备上的浏览需求。杭州网站建设公司也专门针对手机版网页进行优化&#xff0c;提供更好的用户体…

AUTOSAR Adaptive与智能汽车E/E架构发展趋势

AUTOSAR Adaptive是一个面向现代汽车应用需求的标准&#xff0c;特别适用于那些需要高计算能力和灵活性的应用。以下是AUTOSAR Adaptive的典型特性&#xff1a; 高计算能力&#xff1a;AUTOSAR Adaptive支持使用MPU&#xff08;微处理器&#xff09;&#xff0c;这些处理器的性…

2024上半年上海产业转移分析报告

近日&#xff0c;由工业和信息化部举办的2024中国产业转移发展对接活动成功举办。作为全国唯一一个聚焦产业转移的“国字号”盛会&#xff0c;中国产业转移发展对接活动旨在通过跨区域的产业合作与对接&#xff0c;推动产业有序转移和区域协调发展&#xff0c;目前已于四川、贵…

无人机螺旋桨常见材料!!!

一、常见材料及其特点 复合材料&#xff08;如玻璃纤维、碳纤维&#xff09; 特点&#xff1a;轻量化、坚韧、高效。这些复合材料由玻璃纤维、碳纤维等在树脂基体中制成&#xff0c;可以显著提高无人机的飞行效率和稳定性。碳纤维复合材料尤其具有重量轻、抗张强度高、耐腐蚀…

Leetcode面试经典150题-83.删除链表中的重复元素

解法都在代码里&#xff0c;不懂就留言或者私信 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val …

Linux-目录结构和Vim编辑器

目录 Linux目录结构 基本介绍 ​编辑 具体的目录结构 Vim编辑器 vi和vim的基本介绍 vi和vim常用的三种模式 正常模式 插入模式 命令行模式 各种模式的相互切换 vim快捷键盘图 粘贴与删除 拷贝当前行并粘贴 拷贝多行并粘贴 删除当前行 删除多行 Vim的退出保存…

ARM的寄存器组织

cpu读写内存 读&#xff1a;&#xff08;地址&#xff09;内存的值拷贝到寄存器 写&#xff1a;将寄存器的值拷贝到内存 R0-R12&#xff1a;通用寄存器 sp&#xff1a;栈区的栈顶的地址 lr&#xff1a;保存返回地址 比如函数调用处的下一条指令的地址 pc&#xff1a;程序计数器…

【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林的区别

引言 梯度提升&#xff08;Gradient Boosting&#xff09;是一种强大的机器学习技术&#xff0c;它通过迭代地训练决策树来最小化损失函数&#xff0c;以提高模型的预测性能 随机森林&#xff08;Random Forest&#xff09;是一种基于树的集成学习算法&#xff0c;它通过组合多…

网关桥梁:modbus 转 profinet 网关中频加热机的智能融合之旅

一、项目序章&#xff1a;金属热处理的智慧曙光在金属锻造的辉煌舞台上&#xff0c;中频感应加热电源以其高效节能、精准控温的卓越才艺&#xff0c;成为了热处理、焊接与成型艺术中不可或缺的幕后英雄。然而&#xff0c;随着工业自动化的浪潮汹涌而至&#xff0c;如何让这位英…

ig运营事半功倍千万做到这“四不要”

在运营品牌Ins的时候&#xff0c;想要把账号做活跃&#xff0c;就不能做单一的内容&#xff0c;一定要多元化分配内容&#xff0c;下面这4个不要做&#xff0c;一定请记住&#xff01; 1. 不要只是介绍您的产品。否则&#xff0c;你的内容就会变得单调、乏味。观众喜欢阅读故事…

Java中的TCP/IP与UDP协议Socket入门

Socket&#xff1a; 简单地说Socket就相当于是一家快递公司包括&#xff1a; 寄件人&#xff1a; 1.包裹放快递盒里&#xff08;数据打包&#xff1a;DatagramSocket&#xff09; 2.运输快递&#xff08;发送数据&#xff09; 3.付钱回家&#xff08;释放资源&#xff09;…