CAPL 接受如下消息定义
消息 100x mymsg
但是,它不接受长消息 ID,扩展有效负载就是这种情况。换句话说,这就是我想做的(CAPL不接受):
消息 18FEF889x mymsg
我知道有函数mkExtId(),尽管我还没有弄清楚它是如何工作的。我尝试了类似的东西
消息 18FEF889x mymsg
mkExtId(mymsg.id)
但它仍然不起作用。有人有什么想法吗?
谢谢
- 首先声明一个没有 ID 的消息 消息
*扩展消息; 不带 ID 的声明
- 使用 CAPl 函数 mkExtId() 返回扩展 ID
- 将该 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");
}
}