1

我想在 5 个主要 CAN 文件中使用一个变量。我有一个适用于所有 5 个 CAN 文件的包含文件。所以我在这个包含文件中定义并声明了变量。但是当我从主文件中读取变量的值时,我总是得到 0。不幸的是,外部在 CAPL 中不可用。那么有没有办法做到这一点。

谢谢。

4

2 回答 2

1

如果您将 CAPL 与 CANoe 一起使用,您可以使用 Vector CANdb++ 编辑器创建一个数据库,并在数据库中声明一个环境变量。

您可以像这样在所有 CAPL 文件中访问此变量:

putValue(YourEnvironmentVariable,12); // Assigns the value 12 to the variable
Write("%d",getValue(YourEnvironmentVariable); //Prints 12

您还可以声明一个在环境变量更改时引发的事件。

 on envVar YourEnvironmentVariable{//do something...}
于 2016-01-29T10:35:06.183 回答
1

您可以使用系统变量进行全局访问。

首先,您要在包含文件中定义一个新的命名空间和一个系统变量global.cin

/* global.cin */

on Start {
  // define a namespace
  sysDefineNamespace("myNamespace");

  // define an integer system variable with starting, minimum and maximum value
  sysDefineVariableInt("myNamespace", "mySysvar", 0, 0, 99); 
}


通过包含global.cinmain.can文件中,您可以使用相应的 CAPL 函数访问系统变量:

/* main.can */

includes
{
  #include "global.cin"
}


on Start {
  // set system variable value
  sysSetVariableInt("myNamespace", "mySysvar", 42));

  // read system variable value
  write("mySysvar: %d", sysGetVariableInt("myNamespace", "mySysvar"));
}


sysDefineVariable<data-type>()
sysSetVariable<data-type>()
sysGetVariable<data-type>()

对于整数以外的数据类型,您可以在 CANoe / CANalyzer 的文档中找到有关通过 CAPL 访问系统变量的其他信息,其命名样式中有相应的 CAPL 函数 CAPL Functions -> System Variables CAPL Functions

于 2017-03-10T12:18:21.160 回答