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



CAPL 接受如下消息定义

消息 100x mymsg

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

消息 18FEF889x mymsg

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

消息 18FEF889x mymsg

mkExtId(mymsg.id)

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

谢谢

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

    *扩展消息; 不带 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);
}

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

message 0x114455x msg;

该函数mkExtId返回扩展 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");
}
}

相关内容

  • 没有找到相关文章

最新更新