我想在 5 个主要 CAN 文件中使用一个变量。我有一个适用于所有 5 个 CAN 文件的包含文件。所以我在这个包含文件中定义并声明了变量。但是当我从主文件中读取变量的值时,我总是得到 0。不幸的是,外部在 CAPL 中不可用。那么有没有办法做到这一点。
谢谢。
我想在 5 个主要 CAN 文件中使用一个变量。我有一个适用于所有 5 个 CAN 文件的包含文件。所以我在这个包含文件中定义并声明了变量。但是当我从主文件中读取变量的值时,我总是得到 0。不幸的是,外部在 CAPL 中不可用。那么有没有办法做到这一点。
谢谢。
如果您将 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...}
您可以使用系统变量进行全局访问。
首先,您要在包含文件中定义一个新的命名空间和一个系统变量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.cin
在main.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