CAPL 确实接受如下消息定义
消息 100x mymsg
但是,它不接受长消息 ID,这是扩展有效负载的情况。换句话说,这就是我想做的(CAPL 不接受):
消息 18FEF889x mymsg
我知道有函数 mkExtId(),虽然我还没有弄清楚它是如何工作的。我尝试了类似的东西
消息 18FEF889x mymsg
mkExtId(mymsg.id)
但它仍然不起作用。有人有什么想法吗?
谢谢
消息 *ExtMsg; // 没有 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); }
该函数mkExtId
返回扩展的 id,然后您将其分配给id
if 消息,这里是一个示例:
此函数设置传递的消息的扩展 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");
}
}
您可以通过这种方式简单地声明消息:
message 0x114455x msg;