如何在 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的消息

    消息 *ExtMsg; // 没有 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);

【讨论】:

【参考方案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,我这么说怼翻他

饿了么面试官问我如何在分布式系统中创建唯一ID,我这么说怼翻他

如何在 Puppeteer 中创建消息框?

如何在 xcode 6 beta 中创建扩展?

如何在 Python 中创建错误消息? [复制]

表单提交成功后如何在 div 中创建成功消息?