2017-03-14 22 views
0

테스터 요청에 진단 응답을 제공하는 CAPL 노드를 시뮬레이션하려고합니다. CANoe에서는 2 개의 네트워크 노드 1) ECU 및 2) 테스터를 추가했습니다.CAPL에서 노드/ECU 시뮬레이션

//**In Tester.can** 

DiagRequest service req; // In variables, with corresponding service from cdd 

on key 'a' 
{ 
    read_diag_addr_request(); 
} 

void read_diag_addr_request() 
{ 
    DiagSetTarget ("Target");  
    DiagResize(Diag_addr_req,2); 
    DiagSetprimitiveByte(req,1,0x1A); 
    DiagSetprimitiveByte(req,2,0xB0); 
    DiagSendRequest(req); 
} 

//**In ECU.can** 

DiagResponse service res; // In variables, with corresponding service from cdd 

on diagResponse * 
{ 
    write("IN DIAG_RESPONSE"); 
    DiagResize(res,3); 
    DiagSetprimitiveByte(res,0,0x5A); 
    DiagSetprimitiveByte(res,1,0xB0); 
    DiagSetprimitiveByte(res,2,0x"data"); 
    DiagSendResponse(res); 
} 

테스터 요청 [1A B0]은 추적 창에 표시되지만 긍정적 인 응답은 관찰되지 않습니다.

참고 : 긍정적 인 응답 처리 만 고려하고 테스터 요청은 정확합니다. 메시지 * 이벤트를 사용하여 응답을 얻으려고했는데 이것은 정상적으로 작동합니다.

CAPL 기능 DiagSendResponse?를 사용할 때 누군가가 문제를 파악하는 데 도움을 줄 수 있습니까?

감사

답변

0

당신은 응답과 함께 수신 된 요청에 반응 할 때문에, Ecu.can 모듈에서 "on DiagRequest *"핸들러를 사용해야 할 수도 있습니다.

응답을 받으면 "on diagresponse *"이라고합니다.