0

CAPL 确实接受如下消息定义

消息 100x mymsg

但是,它不接受长消息 ID,这是扩展有效负载的情况。换句话说,这就是我想做的(CAPL 不接受):

消息 18FEF889x mymsg

我知道有函数 mkExtId(),虽然我还没有弄清楚它是如何工作的。我尝试了类似的东西

消息 18FEF889x mymsg

mkExtId(mymsg.id)

但它仍然不起作用。有人有什么想法吗?

谢谢

4

3 回答 3

2
  1. 先声明一个没有ID的消息

    消息 *ExtMsg; // 没有 ID 的声明

  2. 使用 CAPl 函数 mkExtId() 返回扩展 ID
  3. 将该 ID 分配给消息。
variables
{
  timer T1 = 1;
  message 0x100 stdMsg;
  dword ext_id ;
  message *ExtMsg;  // Declaration without Id
}

on start
{
  setTimer(T1,1);
  ext_id = mkExtId(0x34444);
  ExtMsg.id = ext_id;
  ExtMsg.dlc = 2;
}

on Timer T1
{
 ExtMsg.byte(0) = 99;
 stdMsg.stdSignal =2;
 output(stdMsg);
 output(ExtMsg);
 setTimer(T1,1);
}
于 2017-03-21T10:20:01.727 回答
1

该函数mkExtId返回扩展的 id,然后您将其分配给idif 消息,这里是一个示例:

此函数设置传递的消息的扩展 id:

void setExtId(dword x_id, message* m)
{
  dword ext_id;
  ext_id = mkExtId(0x1FFFFFFF);
  m.id = mkExtId(x_id);
  if(m.id == ext_id)
  {
    write("some stuff");
  }
}
于 2017-03-09T22:48:28.433 回答
1

您可以通过这种方式简单地声明消息:

message 0x114455x msg;
于 2017-06-07T12:39:51.677 回答