如何在 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");
}
}
- 先声明一条没有ID的消息
message *ExtMsg; // Declaration without Id
- 使用 CAPl 函数 mkExtId() return 扩展 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;
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");
}
}
- 先声明一条没有ID的消息
message *ExtMsg; // Declaration without Id
- 使用 CAPl 函数 mkExtId() return 扩展 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;