繁体   English   中英

CANoe CAPL结构初始化

[英]CANoe CAPL struct initialization

我在Vectors CANoe CAPL中声明和初始化struct遇到麻烦。 我已经知道C / C ++中的结构,但是在CAPL中,声明似乎有些不同。

Vector帮助功能并未真正显示出来。

我有许多CAN ID(例如0x61A)。 每个CAN ID是分配的不同数量的信号ID(例如0xDDF6)。 我想从CAN ID循环读取Signal ID,并计划将其组织成复杂的struct

我已经尝试过不同类型的声明和初始化,但是每次遇到解析错误时,都可以尝试。

您能帮我解决我的问题吗? struct不同,还有其他想法可以组织我的价值观吗?

谢谢和问候!

从CAPL文档中:

可以在CAPL中以类似于C的方式声明结构化类型。

...它们只能在7.0 Service Pack 3版本的CANoe中与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

我在struct访问方面存在缺陷。 试图在变量声明例程中而不是在on start例程中初始化struct参数。

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

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;
  /* ... */
}

谢谢你的帮助!

仅出于完整性考虑:还可以在变量声明中初始化struct

variables
{
   struct myStruct
   {
      dword val;
      dword arr[8];
   };
   struct myStruct myInstance = {1, {1,2,3,4,5,6,7,8}};
}

(在CANoe 10上测试)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM