在CAPL中获取诊断信息

时间:2018-07-24 15:20:34

标签: diagnostics capl

我很难用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 


}

但是什么也没发生。 响应在总线上发出,但未执行diagresponse。 我正在使用CAN总线/ UDS协议。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在测试模块中,您应该使用

testWaitForDiagResponse

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

获取响应参数
DiagGetRespParameter