我是CAPL脚本的初学者。我正在编写一个脚本来发送带有帧ID(PID)的8字节消息。当我在独木舟中运行脚本时,ECU没有给出响应。设置和数据库中的所有内容都是正确的。脚本中存在问题。以下是剧本。
/*@!Encoding:1252*/
variables
{
linmessage 0x11 Request;
linmessage 0x25 Response;
linmessage 0x01 Initiate_wake_up;
byte WakeUpFrame = 0x3E;
byte Request_Header = 0x11;
byte Response_Header = 0x25;
}
void Util_SendHeader(byte frameID)
{
Request.MsgChannel = 1;
Request.ID = frameID;
Request.RTR=1;
output(Request);
}
void Wake_Up_Frame()
{
Util_SendHeader (WakeUpFrame);
Request.byte(0)=0x00;
Request.byte(1)=0x00;
Request.byte(2)=0x00;
Request.byte(3)=0x00;
Request.byte(4)=0x00;
Request.byte(5)=0x00;
Request.byte(6)=0x00;
Request.byte(7)=0x00;
Request.rtr=0;
output(Request);
}
on key 'q'
{
Wake_Up_Frame();
Request.byte(0) = 0x00;
Request.byte(1) = 0x0A;
Request.byte(2) = 0x00;
Request.byte(3) = 0x00;
Request.byte(4) = 0x00;
Request.byte(5) = 0x00;
Request.byte(6) = 0x00;
Request.byte(7) = 0x00;
Util_SendHeader (Request_Header);
Request.rtr=0;
output(Request);
Util_SendHeader (Response_Header);
}
请帮帮我。
答案 0 :(得分:0)
要发送LIN消息,需要两次output()调用 - 1-st,rt。= 0,第二次调用.rtr = 1。第一个调度消息数据以进行传输。第二个触发传输。如果某个外部主设备在LIN总线上发送消息头,而标头ID与预定消息的ID匹配,则工具将发送消息(充当从设备),而不是第二个输出()。要从slave接收消息,只需要第二个输出()。它将使工具在LIN总线上传输消息头。任何具有匹配消息就绪(相同ID)的从站将发送消息数据。