2016-09-27 81 views

回答

0

試試這可能是它使用SendDiagRequest(reqobj);

1.增加在獨木舟設置 3.You矢量獨木舟 2.設定目標ECU各自的CDD文件已定義服務的內容的每個字節的值,可以得到這些值在可以跟蹤服務的 4.create對象在CAPL中並使用SendDiagRequest(reqobj)發送它;

+0

我在CAPL中找不到「SendDiagRequest」命令。它是diagRequestSent嗎? –

+0

DiagSendRequest(req_object) –

+0

我試着用消息xxx sendMsg {dlc = 8}發送5個字節的DID; output(sendMsg);這是成功的。 但是當我用超過8字節(在我的情況下是22字節)使用流量控制概念時,你能解釋一下如何在CAPL中實現流量控制概念嗎? 我對DiagSendRequest(obj)的用法沒有任何意見; –

0

長DiagSendRequest(diagRequest OBJ)

+0

我試着用消息xxx sendMsg {dlc = 8}發送5個字節的DID; output(sendMsg);這是成功的。 但是當我用超過8字節(在我的情況下是22字節)使用流量控制概念時,你能解釋一下如何在CAPL中實現流量控制概念嗎? –

+0

雖然這段代碼可能有助於解決問題,但它並沒有解釋_why_和/或_how_它是如何回答問題的。提供這種附加背景將顯着提高其長期教育價值。請[編輯]您的答案以添加解釋,包括適用的限制和假設。 –

0

如果您有加載到獨木舟(CDD/ODX/PDX等)的診斷庫,然後它會通常有傳輸協議定義了將細分Tx和Rx在那裏長度超過8個字節。

你的文章說你正在自動化你的測試用例。這在CANoe的測試模塊中完成得最好。如果您加載了CDD,則可以將CAPL瀏覽器符號窗格(通過診斷過濾)中的DID拖動到CAPL中,例如,在diagRequest之後拖動「DID_01_ReadInfo」。

long size; 
byte returnBytes[4096]; 
diagRequest DID_01_ReadInfo readInfoReq; // diag request object 
diagResponse DID_01_ReadInfo readInfoResp; // diag reponse object 

diagSendRequest(readInfoReq); 

switch (testWaitForDiagResponse(readInfoReq, 2000)) // 2 sec timeout 
{ 
    case 0: // timeout 
      teststepfail("No reply from ECU"); 
      break; 

    case 1: // response received 

      if (diaggetLastResponseCode(readInfoReq) == -1) 
      { 
      teststepPass("Positive Response"); 

      // Get the number of bytes from the last response and store in 'returnBytes' 
      diagGetLastResponse(readInfoReq, readInfoResp); 
      size = diagGetPrimitiveData(readInfoResp, returnBytes, elCount(returnBytes)); 
      } 
      else 
      { 
      teststepfail("Negative Response"); 
      } 
      break; 
}