如何在 CAPL 中创建扩展消息 ID?
Posted
技术标签:
【中文标题】如何在 CAPL 中创建扩展消息 ID?【英文标题】:How do I create an extended message ID in CAPL? 【发布时间】:2017-07-30 04:54:57 【问题描述】:CAPL 接受如下消息定义
消息 100x mymsg
但它不接受长消息 ID,这是扩展有效负载的情况。换句话说,这是我想做的(CAPL 不接受):
消息 18FEF889x mymsg
我知道有函数 mkExtId(),虽然我还没有弄清楚它是如何工作的。我尝试了类似的东西
消息 18FEF889x mymsg
mkExtId(mymsg.id)
但它仍然不起作用。有人有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:-
首先声明一个没有ID的消息
使用 CAPl 函数 mkExtId() 返回扩展 ID 将该 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);
【讨论】:
【参考方案2】:函数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");
【讨论】:
非常感谢!因为我没有 15 票,所以我仍然不能投票给你! 没问题。它奏效了吗?我有那个 sn-p,但我无法完全测试它。【参考方案3】:你可以用这种方式简单地声明消息:
message 0x114455x msg;
【讨论】:
以上是关于如何在 CAPL 中创建扩展消息 ID?的主要内容,如果未能解决你的问题,请参考以下文章
饿了么面试官问我如何在分布式系统中创建唯一ID,我这么说怼翻他