2017-03-14 55 views
0

私は、テスター要求に診断応答を与えるCAPLのノードをシミュレートしようとしています。 CANoeでは、1)ECUと2)Testerの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 *」と呼ばれます。

関連する問題