【问题标题】:getting diagnostic information in CAPL在 CAPL 中获取诊断信息
【发布时间】:2018-07-24 15:20:33
【问题描述】:

我无法使用 CAPL 测试代码读取任何类型的诊断信息。 可以使用限定符发送请求,但无法对响应做出反应。

这是代码示例:

我在 Main() 中调用这个函数:

fDiag_read_faults()
{

  byte DTCasText[1000];
  char reasonOut[10];
  dword i; 
  diagRequest FaultMem_ReportDTCByStatusMask  diag_req;

  diagSetTarget("EPS218");  
  diagConnectChannel();
  diagSetCurrentSession(1); 

  diagSendRequest(diag_req);

等等... 然后我会期待对以下内容的反应:

on diagResponse *
{
  byte data[4096];
  long size;


  diagResponse * resp; // declare response with no concrete interpretation
  size=this.GetPrimitiveSize(); // get length of response
  this.GetPrimitiveData(data, elcount(data)); // copy actual response into 
  data array 


}

但什么都没有发生。 响应来自总线,但未执行 on diagresponse。 我正在使用 CAN 总线/UDS 协议。

非常感谢任何帮助。

【问题讨论】:

    标签: diagnostics capl


    【解决方案1】:

    当你在一个测试模块中你应该使用

    testWaitForDiagResponse
    

    等待响应。 然后您可以使用

    获取响应参数
    DiagGetRespParameter
    

    【讨论】:

    • 感谢您的回答。其实你是对的。我必须等待 cca 2 秒才能获得答案,并且 ondiagresponse 才能抓住它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多