首页 文章

CANoe CAPL struct初始化

提问于
浏览
1

我在向量CANoe CAPL中声明和初始化 struct 时遇到了问题 . 我已经知道C / C中的结构,但似乎CAPL中的声明有点不同 .

Vector帮助功能并没有真正揭示 .

我有许多CAN ID(例如0x61A) . 每个CAN ID都分配了不同数量的信号ID(例如0xDDF6) . 我想从CAN ID中读出循环信号ID,并计划在一个复杂的 struct 中组织它 .

我已经尝试了不同类型的声明和初始化,但每次我得到一个解析错误 .

能帮我解决一下我的问题吗?组织我的 Value 观的其他想法与 struct 不同?

谢谢你,问候!

2 回答

  • 2

    我在 struct 访问中有一个漏洞 . 试图在变量声明例程中初始化 struct 参数,而不是在 on start 例程中 .

    我的多数据访问的工作代码现在是:

    variables
    {
      struct Veh_Database
      {
        dword ECU;
        dword ParamID[8][2];
      };
      struct Veh_Database ECU_Info[12];
    }
    
    on start
    {
      ECU_Info[0].ECU = 0x1A;
      ECU_Info[0].ParamID[0][0] = 0xDD;     
      ECU_Info[0].ParamID[0][1] = 0xF6;
      /* ... */
      ECU_Info[1].ECU = 0x12;
      ECU_Info[1].ParamID[0][0] = 0xDE;
      ECU_Info[1].ParamID[0][1] = 0x9C;
      /* ... */
    }
    

    谢谢你的帮助!

  • 2

    从CAPL文档:

    结构化类型可以在CAPL中以类似于C的方式声明...... ......它们只能在带有CANoe 7.0版Service Pack 3的CAPL程序中使用 .

    例:

    variables
    {
      /* declarating a struct */
      struct MyData {
        int i;
        float f;
      };
    }
    
    on start
    {
      /* defining a struct variable and initiliazing the elements */
      struct MyData data = {
        i = 42,
        f = 1.32
      };
    
      /* accessing the struct elements */
      write("i=%d, f=%f", data.i, data.f);
    }
    

    输出:

    i=42, f=1.320000
    

相关问题