如何构建LIN消息并将其发送到CAPL

时间:2017-07-11 07:25:26

标签: bus capl canoe

我是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);
}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

要发送LIN消息,需要两次output()调用 - 1-st,rt。= 0,第二次调用.rtr = 1。第一个调度消息数据以进行传输。第二个触发传输。如果某个外部主设备在LIN总线上发送消息头,而标头ID与预定消息的ID匹配,则工具将发送消息(充当从设备),而不是第二个输出()。要从slave接收消息,只需要第二个输出()。它将使工具在LIN总线上传输消息头。任何具有匹配消息就绪(相同ID)的从站将发送消息数据。

相关问题