【问题标题】:How do I build up a LIN message and send it out in CAPL如何构建 LIN 消息并在 CAPL 中发送出去
【发布时间】:2019-09-18 17:19:00
【问题描述】:

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

请帮帮我。

【问题讨论】:

    标签: bus capl canoe


    【解决方案1】:

    要发送 LIN 消息,需要调用两次 output():第一次调用 .rtr=0,第二次调用 .rtr=1

    第一个调度消息数据以进行传输。第二个触发传输。

    如果某个外部主机不是第二个output(),而是在 LIN 总线上发送消息头,并且头 ID 与预定消息的 ID 匹配,则工具将传输消息(充当从机)。

    要接收来自从站的消息,只需要第二个output()。它将在 LIN 总线上传输消息头。任何准备好匹配消息(相同 ID)的从站都将传输消息数据。

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 2019-01-28
      • 2018-11-23
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2020-07-21
      相关资源
      最近更新 更多