我正在尝试模拟CAPL中的节点,该节点对测试仪请求提供诊断响应。在CANoe中,我添加了2个网络节点1)ECU和2)测试仪。
//**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],但未观察到正响应。
注意:只考虑肯定的响应处理并且测试者请求是正确的。我尝试使用message * event获取响应,这很好。
使用 CAPL函数DiagSendResponse时,有人可以帮我解决问题吗?
由于
答案 0 :(得分:1)
您可能需要使用" on DiagRequest *
" Ecu.can模块中的处理程序,因为您希望对收到的请求作出响应。
" on diagresponse *
"如果您接收响应,则会被调用。