如何在 CAPL 中创建扩展消息 ID?

How do I create an extended message ID in CAPL?

CAPL 确实接受如下消息定义

消息 100x mymsg

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

消息 18FEF889x mymsg

我知道有函数 mkExtId(),但我还没有弄清楚它是如何工作的。我试过类似

消息 18FEF889x mymsg

mkExtId(mymsg.id)

但还是不行。有人有什么想法吗?

谢谢

函数 mkExtId returns 扩展id,然后你分配给 id 如果消息,这里是一个例子:

此函数设置传递的消息的扩展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");
  }
}
  1. 先声明一条没有ID的消息

    message *ExtMsg; // Declaration without Id

  2. 使用 CAPl 函数 mkExtId() return 扩展 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);
}

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

message 0x114455x msg;