首页 文章

CAPL中节点/ ECU的仿真

提问于
浏览
0

我正在尝试模拟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],但未观察到正响应 .

注意:仅考虑正响应处理并且测试器请求是正确的 . 我尝试使用消息*事件获取响应,这工作正常 .

有人帮我解决问题时使用 CAPL function DiagSendResponse?.

谢谢

1 回答

  • 1

    您可能需要在Ecu.can模块中使用“ on DiagRequest * ”处理程序,因为您希望对收到的请求作出响应 .

    如果你 receive 一个响应,则调用“ on diagresponse * ” .

相关问题