如何用CAPL进行UDS诊断自动化测试

看懂这篇文章,你将可以利用CAPL进行大部分诊断自动化测试 

车载领域都要进行UDS诊断测试,每次版本更新都要进行一次重复的测试,避免出现问题,面对这中情况,每次都要重复手动点击几十个要浪费大量的时间,这个时候如果写一个CAPL脚本,通过CANoe进行自动化测试,将给我们省去大量的时间

看懂这篇文章,你就可以通过CAPL进行编写自动化脚本,可以帮助进行大部分UDS自动化测试

废话不多说,直接看代码:

TestCase Test1()
{
   // Send Request and react to all possible cases.
   diagRequest Door.EcuIdentification_Read idReq;
   diagSendRequest( idReq);

   switch( TestWaitForDiagResponse( idReq, 200))
   {
   case 0: // Timeout: The ECU did not respond within 200 ms.
      write("No answer from ECU!");
      TestStepFail("Read ID", "No answer from ECU!");
      break;
   case 1: // response received
      TestReportWriteDiagResponse(idReq); // write response to report
      if( diagGetLastResponseCode(idReq) == -1)
      {
      // A positive response was received
      write("ECU Diagnostics Identification: %d", (long)diagGetRespParameter(idReq,"Diagnostic_Identification"));
      TestStepPass("Read ID", "Positiv response received!");
      }
      else // A negative response was received
      {
      write( "ECU Diagnostics Identification failed: 0x%x", diagGetLastResponseCode( idReq));
      TestStepFail("Read ID", "Negative response received");
      }
      break;
      default: // internal or setup error
      TestStepFail("Read ID", "Error in TestCase! Verdict unreliable.");
      }
}

diagRequest:诊断请求,cdd文件中定义好的诊断命令

diagSendRequest:发送诊断命令

TestWaitForDiagResponse:CAPL自带函数,对上面发送的诊断命令进行判断,用法是(诊断请求,时间ms级),会有三种返回值

        =1:时间内回复

        0:超时未回复

        <0:错误

write:write窗口打印

TestStepFail:返回用例执行失败

TestReportWriteDiagResponse:将响应的结果打印在测试报告中

diagGetLastResponseCode:获取上一次响应代码,三种返回值

        -1:肯定响应

        0:超时

        >0:负响应

TestStepPass:返回用例执行通过

可以通过函数封装,将这些封装在一个函数里面,在对发送诊断命令,并对响应进行判断,而且也会自动生成报告,以后在多个项目中,只要改变参数,就可以方便我们进行自动化测试编写并测试

最后在下面添加 MainTest()函数,并添加上面的testcase 用例名称,在canoe里面添加CAPL测试模块,将.can文件添加进去就可以执行测试了

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,我可以为您提供一些关于用CAPL编写UDS诊断自动化的指导。 首先,UDS(Unified Diagnostic Services)是一种通用的诊断服务,用于在汽车电子控制单元(ECU)之间进行诊断和通信。在CAPL中,您可以使用CANoe的UDS库来实现UDS诊断自动化。 以下是编写UDS诊断自动化的步骤: 1. 连接CANoe与ECU 使用CANoe的通信模块连接CANoe与ECU。 2. 配置UDS会话 使用UDS会话配置工具配置UDS会话,包括诊断会话类型、诊断ID和UDS服务。 3. 编写CAPL脚本 使用CAPL脚本编写UDS诊断自动化。 以下是一个简单的示例,用于发送UDS诊断请求并接收响应: ``` variables { msTimer timer; UDS_Result result; UDS_Service service; UDS_DiagSessionType session; UDS_Dll dll; UDS_Response response; } on start { // 初始化UDSUDS_Init(dll); UDS_SetDefaultSession(session); UDS_SetDefaultService(service); // 设置UDS响应超时时间 UDS_SetResponseTimeout(1000); // 设置UDS诊断会话类型 UDS_SetDiagSession(session); // 发送UDS诊断请求 UDS_SendRequest(service, response); // 检查UDS响应 if(response.result == UDS_OK) { // 处理UDS响应 // ... } else { // 处理UDS错误 // ... } } on timer { // 发送UDS诊断请求 UDS_SendRequest(service, response); // 检查UDS响应 if(response.result == UDS_OK) { // 处理UDS响应 // ... } else { // 处理UDS错误 // ... } } ``` 在这个示例中,我们初始化UDS库,设置UDS诊断会话类型和服务,并发送UDS诊断请求。我们还使用定时器定期发送UDS诊断请求。当我们收到UDS响应时,我们可以处理响应数据并采取相应的操作。 希望这些指导可以帮助您编写UDS诊断自动化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值