我想在5个主要CAN文件中使用变量。我有一个包含所有5个CAN文件的包含文件。所以我在这个包含文件中定义并声明了变量。但是当我从主文件中读取变量的值时,我总是得到0.不幸的是,在CAPL中没有Extern。那么有没有办法做到这一点。
感谢。
答案 0 :(得分:1)
如果您将CAPL与CANoe一起使用,您可以使用Vector CANdb ++ Editor创建一个数据库,并在数据库中声明一个Environment-Variable。
您可以在所有CAPL文件中访问此变量,如下所示:
putValue(YourEnvironmentVariable,12); // Assigns the value 12 to the variable
Write("%d",getValue(YourEnvironmentVariable); //Prints 12
您还可以声明在更改环境变量时引发的事件。
on envVar YourEnvironmentVariable{//do something...}
答案 1 :(得分: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.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"));
}
对于整数以外的数据类型,在命名方式中有相应的CAPL函数
sysDefineVariable<data-type>()
sysSetVariable<data-type>()
sysGetVariable<data-type>()
您可以在CAPL Functions -> System Variables CAPL Functions