【问题标题】:How do I create an extended message ID in CAPL?如何在 CAPL 中创建扩展消息 ID?
【发布时间】:2017-07-30 04:54:57
【问题描述】:

CAPL 接受如下消息定义

消息 100x mymsg

但它不接受长消息 ID,这是扩展有效负载的情况。换句话说,这是我想做的(CAPL 不接受):

消息 18FEF889x mymsg

我知道有函数 mkExtId(),虽然我还没有弄清楚它是如何工作的。我尝试了类似的东西

消息 18FEF889x mymsg

mkExtId(mymsg.id)

但它仍然不起作用。有人有什么想法吗?

谢谢

【问题讨论】:

    标签: capl messageid


    【解决方案1】:
    1. 首先声明一个没有ID的消息

      消息 *ExtMsg; // 没有 Id 的声明

    2. 使用 CAPl 函数 mkExtId() 返回扩展 ID
    3. 将该 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-08
        • 2017-01-28
        • 1970-01-01
        • 1970-01-01
        • 2019-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多