UDS诊断服务-22服务-Capl脚本

目录

一,系统需求

二,测试用例​编辑

三,代码

四,Capl内置函数:简易注释

1,TestModuleTitle

2,TestReportAddEngineerInfo

3,TestStepFail/TestStepPass

5,On diagRequest

6,On diagResponse

7,long diagSendRequest (diagRequest obj)

8,long TestWaitForDiagRequestSent (diagRequest request, dword timeout);

9,long TestWaitForDiagResponse (diagRequest request, dword timeout)

10,long diagGetRespPrimitiveByte( diagRequest request, DWORD bytePos)

五,详细注释

1,具体调用方法在Vector官网查询

2,例:​


一,系统需求

二,测试用例

三,代码

includes
{
  
}

variables
{
  const long ReceiveTimeout = 5000;             //等待最大的接收超时时间
  message 0x624 TX1;                                    //唤醒帧
  int i;                                                                //读取的DID
}

void MainTest ()
{
  output(TX1);
  testModuleTitle("HS11 DIAGTEST");
  testReportAddEngineerInfo("TEST ENGINEER","ROSE");
  Read_DID_0x001_SwMcuVer();
  Read_DID_0x005_BkltSts();
}

testcase Read_DID_0x001_SwMcuVer()   //读MCU版本号
{
  int i;
  byte DID_READ[2];           //存续读取数据的数组
  byte MCUDID[2]={0x01,0x03};         //写入DID
  int DIDBYTE=6;                        //版本号DID所在BYTE位数   
  long status;                    //诊断响应结果                                     
  diagRequest HS11_Diag.SwMcuVer_Read READ_220001_RQ;                  //创建一个诊断请求变量
  diagResponse HS11_Diag.SwMcuVer_Read READ_220001_PR;                 //创建一个诊断响应变量
  diagSendRequest(READ_220001_RQ);                                     //发送诊断请求
  
  if(testWaitForDiagRequestSent(READ_220001_RQ,ReceiveTimeout) == 1)   //检查诊断请求发送情况
  {
    TestStepPass("READ_220001诊断请求发送成功"); 
  }
  else
  {
    TestStepFail("READ_220001诊断请求发送失败");
  } 
  
  if(TestWaitForDiagResponse(READ_220001_RQ, ReceiveTimeout) == 1)      //检查诊断响应结果                                             
    {
      status = DiagGetLastResponseCode(READ_220001_RQ);                 //响应结果赋值
      if(status == -1)                                                  //正响应
      {
        write("READ_220001正响应");
        TestStepPass("READ_0001正响应"); 
      }
      else                                                              //负响应
      { 
        write("READ_220001负响应",status);
        TestStepFail("READ_0001负响应");       
      }       
    } 
    
    for(i = 0;i < 8; i++)
    {
    DID_READ[i]=DiagGetRespPrimitiveByte(READ_220001_RQ,i+6);                 //获取诊断响应上DID对应字节的数据
    }
    for(i=0;i<7;i++)
    {
      if(DID_READ[i] != MCUDID[i])                            //遍历
      {
        TestStepFail("MCU版本号错误"); 
        break;
      }
    }
    if(i == 7)
        TestStepPass("MCU版本号正确"); 
}

四,Capl内置函数:简易注释

1,TestModuleTitle

测试模块标题

2,TestReportAddEngineerInfo

测试工程师信息

3,TestStepFail/TestStepPass

测试结果判定

5,On diagRequest

创建诊断请求

6,On diagResponse

创建诊断响应

7,long diagSendRequest (diagRequest obj)

诊断请求发送

8,long TestWaitForDiagRequestSent (diagRequest request, dword timeout);

判定诊断请求发送是否成功(void=1,成功)

9,long TestWaitForDiagResponse (diagRequest request, dword timeout)

判断诊断响应(正响应/负响应,void= -1,成功)

10,long diagGetRespPrimitiveByte( diagRequest request, DWORD bytePos)

获取诊断响应指定字节数据

五,详细注释

1,具体调用方法在Vector官网查询

file:///C:/Program%20Files/Vector%20CANoe%2016/Help01/CANoeCANalyzerHTML5/CANoeCANalyzer.htm

2,例:

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值