CAPL 自动化脚本 - UDS 安全解锁 Lv1

本文介绍了一种使用CANoeDiagnostic和capl脚本进行UDS27号功能自动解锁的方法,包括获取种子、计算密钥并发送到ECU,虽然简单但不适用于所有通用场景。
摘要由CSDN通过智能技术生成

一种简易的UDS$27解锁方式,使用capl脚本去实行自动化。

利用CANoe自己的Diagnostic去诊断,返回。

首先:声明2701 2702

拿到种子后,使用diagGenerateKeyFromSeed函数去调用工程里面的DLL文件去计算。

再将计算好的密钥发送到ECU。

void SecurityAccess_Lv1()
{
  diagRequest DCM.request Seed_1; // 27 01
  diagRequest DCM.request Key_2; // 27 02 
  const dword Response_time = 50; // diagnostic response time
  byte SeedArray[4]; // Actual Seed length
  byte KeyArray[4]; // Actual key length
  dword KeyActualSize; // Actual key length
  int i;
  
  diagSendRequest(Seed_1);// send 27 01 request
  if(testWaitForDiagResponse(Seed_1,Response_time)) // Waiting for 2701 response, Waiting for 2701 response, place the seed in array
  {
    for(i=0;i<elcount(SeedArray);i++)
      {
        SeedArray[i]=diagGetRespPrimitiveByte(Seed_1,i+2); 
        // write("%d",SeedArray[i]);
      }
  }
/* if there is no response within the defined time, consider adding testfail function */
//  else
//  {
//    testStepFail("");
//  }
  if(0==diagGenerateKeyFromSeed("ecuQualifier",SeedArray,elcount(SeedArray),1,"","",KeyArray,elcount(KeyArray),KeyActualSize))
  {
    // write("%d, %d, %d, %d",KeyArray[0],KeyArray[1],KeyArray[2],KeyArray[3]);
    diagSetParameterRaw(Key_2,"SecurityKey",KeyArray,elcount(KeyArray)); // set 27 02 raw
    diagSendRequest(Key_2); // send key to ECU
  }
}

这种方式简单,可以快速的去操作。

如果想要做一个通用库,不一定适用。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: CAPL(Communication Access Programming Language)是一种用于编写通信测试脚本的语言,常用于CANoe中进行自动化测试。CAPL脚本的代码结构可以根据需求进行灵活编写,但通常包括以下几个部分:引用\[2\] 1. 前言:在脚本的开头部分,可以进行一些初始化设置和声明变量等操作。 2. 主要逻辑:在主要逻辑部分,可以编写测试用例的执行流程和相应的功能实现。可以使用条件语句、循环语句、函数调用等来实现不同的测试场景。 3. 函数定义:CAPL脚本中可以定义自己的函数,用于封装一些常用的操作或功能。这些函数可以在主要逻辑中被调用,提高代码的复用性和可读性。 4. 结束语:在脚本的结尾部分,可以进行一些清理操作或输出测试结果等。 对于UDS(Unified Diagnostic Services)的自动化测试,可以根据具体需求编写相应的CAPL脚本。在脚本中,可以使用UDS相关的函数和命令来实现对诊断功能的测试,包括发送诊断请求、接收诊断响应、解析响应数据等。同时,根据引用\[1\]中提到的半自动化脚本的需求,可以在脚本中添加手动确认功能的步骤,以确保功能配置的正确性。 总之,CAPL脚本可以根据具体的测试需求进行编写,通过调用相关函数和命令来实现UDS功能的自动化测试。 #### 引用[.reference_title] - *1* *2* [UDS-基于CAPL的半自动化脚本编写流程](https://blog.csdn.net/wjz110201/article/details/124704882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [搭配Panel界面及使用Capl识别配置文件TXT编写基于14229的UDS自动化测试流程)](https://blog.csdn.net/qq_36407982/article/details/109131802)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值