文章目录
- General Functions
- Define Variables
- Return Data of a Variable
- sysGetOrigTimeNS
- sysGetVariableArrayLength
- sysGetVariableData
- sysGetVariableDescriptionForValue
- sysGetVariableDWord
- sysGetVariableFloat
- sysGetVariableFloatArray
- sysGetVariableInt
- sysGetVariableLongArray
- sysGetVariableLongLong
- sysGetVariableMax
- sysGetVariableMin
- sysGetVariableQWord
- sysGetVariableString
- sysGetVariableSVType
- sysGetVariableTimeNS
- sysGetVariableValueForDescription
- Set Value of a Variable
- Structs of System Variable
- Variable filters
General Functions
sysDefineNamespace
使用方法
函数作用
定义名称空间。具体的返回值有如下情况:
0:无错误,功能成功
1:未找到名称空间或第二次尝试定义相同的名称空间
2:变量未找到或第二次尝试定义相同的变量
3:对于可用的命名空间没有书写权
4:变量没有适合函数的类型
sysUndefineNamespace
使用方法
函数作用
删除名称空间。 此外,此命名空间中的所有变量都会自动删除。具体的返回值有如下情况:
0:无错误,功能成功
1:未找到名称空间或第二次尝试定义相同的名称空间
2:变量未找到或第二次尝试定义相同的变量
3:对于可用的命名空间没有书写权
4:变量没有适合函数的类型
sysUndefineVariable
使用方法
函数作用
删除一个系统变量。具体的返回值有如下情况:
0:无错误,功能成功
1:未找到名称空间或第二次尝试定义相同的名称空间
2:变量未找到或第二次尝试定义相同的变量
3:对于可用的命名空间没有书写权
4:变量没有适合函数的类型
Define Variables
sysDefineVariableData
使用方法
函数作用
定义数据类型的变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。 只能使用可用命名空间创建变量。 命名空间可以用 sysDefineNamespace 创建。
sysDefineVariableFloat
使用方法
函数作用
定义浮点型变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。只能使用可用命名空间创建变量。命名空间可以用 sysDefineNamespace 创建。
sysDefineVariableFloatArray
使用方法
函数作用
定义 float[] 类型的变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。变量只能使用 可用的命名空间。 命名空间可以用 sysDefineNamespace 创建。
sysDefineVariableInt
使用方法
函数作用
定义一个 int 类型的变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。变量只能是 使用可用的命名空间创建。 命名空间可以用 sysDefineNamespace 创建。
sysDefineVariableIntArray
使用方法
函数作用
定义字符串 (char[]) 类型的变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。变量只能是 使用可用的命名空间创建。 命名空间可以用 sysDefineNamespace 创建。
sysDefineVariableString
使用方法
函数作用
定义字符串 (char[]) 类型的变量。使用此函数定义的变量只能使用 sysGetVariable…/sysSetVariable… 函数访问,其中命名空间和变量名称作为字符串参数给出。变量只能是 使用可用的命名空间创建。 命名空间可以用 sysDefineNamespace 创建。
Return Data of a Variable
sysGetOrigTimeNS
使用方法
函数作用
返回上次更新变量值的原始时间戳,在时间同步可能已经改变它之前。自测量开始以来以纳秒为单位的最后更新变量值的原始时间戳。
示例
int64 timeStamp;
timeStamp = sysGetOrigTimeNS(sysvar::MyNamespace::FloatVar);
sysGetVariableArrayLength
使用方法
函数作用
返回系统变量数组的长度。直接访问系统变量中的值。 使用此变体无法访问整个数组。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
对于数据类型的系统变量,返回值的当前大小(以字节为单位)。
对于 long 或 float 数组类型的系统变量,返回数组中的元素数。
对于字符串类型的系统变量,返回字符串的长度,不包括终止字符 0。
对于 long 或 float 类型的系统变量,返回 1。
示例
// calculate the norm of a vector
dword length, i;
double element, sum, norm;
sum = 0.0;
length = sysGetVariableArrayLength(sysvar::MyVariables::MyVector);
for (i = 0; i < length; ++i)
{
element = @sysvar::MyVariables::MyVector[i];
sum += element * element;
}
norm = sqrt(sum);
sysGetVariableData
使用方法
函数作用
返回数据、字符串、结构或通用数组类型的变量的值。该函数还可用于结构或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果直接将元素名称提供给函数而不是使用字符串,则在名称之前添加 sysvarMember:: 而不是 sysvar::。对于字符串类型的变量,将返回字符串的原始字节。 该值以 UTF-8 编码或以计算机的当前活动代码页编码,具体取决于 CANoeOptions 对话框(字符串编码)中的设置。 字节包括终止的 0。
示例
on key 'e'
{
sysvarData * svData1;
char valueSysVarData[100];
byte buf[2];
long size = 2;
long copiedBytes;
byte data[2] = {0xAF, 0xEF};
svData1 = getSysVarData(0);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
sysSetVariableData(svData1, data, size);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is now: %x", svData1.name, buf[0]);
svData1 = getSysVarData(1);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
svData1 = getSysVarData(2);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
}
sysvarData * getSysVarData(int eKey)
{
switch (eKey)
{
case 0:
return sysvar::FMW1::KeyData;
case 1:
return sysvar::DCM::SpeedSignalData;
default:
return sysvar::Engine::EngineStateData;
}
}
sysGetVariableDescriptionForValue
使用方法
函数作用
检索 long 或 long array 类型的系统变量的值的描述。 这样就可以访问系统变量的值表了。
示例
char buffer[20];
sysGetVariableDescriptionForValue("Dynamic", "IntVar", 0, buffer, elcount(buffer));
sysGetVariableDWord
使用方法
函数作用
返回类型为无符号 32 位整数的变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
sysGetVariableDWord(sysvar::MyNamespace::UInt32Var);
sysGetVariableFloat
使用方法
函数作用
返回double类型变量的值。直接从系统变量中获取值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
on key 'b'
{
double value;
value = SysGetVariableFloat(sysvar::MyNamespace::FloatVar);
write("Value of FloatVar is %g", value);
}
on key 'c'
{
sysvarFloat * svFloat1; //defines a local system variable 'sv1Float' with the system variable type 'sysvarFloat'
float valueSysVar;
svFloat1 = getSysVarFloat(0);
//@svFloat1 = 1.5;
write("Variable is %s, Value is %7.3f", svFloat1.name, @svFloat1);
//@svFloat1 = @svFloat1*2.5;
sysSetVariableFloat(svFloat1, @svFloat1*2.5);
write("Variable is %s, Value is higher: %7.3f", svFloat1.name, @svFloat1);
svFloat1 = getSysVarFloat(1);
write("Variable is %s, Value is %7.3f", svFloat1.name, @svFloat1);
svFloat1 = getSysVarFloat(2);
valueSysVar = sysGetVariableFloat(svFloat1);
write("Variable is %s, Value is %d", svFloat1.name, valueSysVar);
}
sysvarFloat * getSysVarFloat(int cKey)
{
switch (cKey)
{
case 0:
return sysvar::FMW1::KeyFloat;
case 1:
return sysvar::DCM::SpeedSignalFloat;
default:
return sysvar::Engine::EngineFloat;
}
}
sysGetVariableFloatArray
使用方法
函数作用
如果系统变量的实际数组大小大于作为参数给出的数组大小,则 values 数组中直到作为参数给出的数组大小的所有元素都将接收系统变量的当前值。 values 数组中超出作为参数给出的数组大小的元素将保持不变。如果系统变量的实际数组大小小于作为参数给出的数组大小,则 values 数组中的其他元素将被设置为 0。 超出作为参数给出的数组大小的值数组将保持不变。切勿将大于值数组实际大小的数组大小作为参数提供,这将导致不可预测的行为。
示例
on key 'g'
{
sysvarFloatArray * sv1;
float fVarArr [5] = {7.3, 7.3, 7.3, 7.3, 7.3};
sv1 = getSysVarFloatArray(0);
write("Variable is %s%s, Value is %2.1lf", sv1.name, "[0]", @sv1[0]);
sysSetVariableFloatArray(sv1,fVarArr, elcount(fVarArr));
write("Variable is %s%s, Value is: %2.1lf", sv1.name, "[0]",@sv1[0]);
sv1 = getSysVarFloatArray(1);
write("Variable is %s%s, Valgue is %2.1lf", sv1.name, "[0]", @sv1[0]);
sv1 = getSysVarFloatArray(2);
sysGetVariableFloatArray (sv1, fVarArr, elcount(fVarArr));
write("Variable is %s%s, Value is %2.1lf", sv1.name, "[0]",fVarArr[0]);
}
sysvarFloatArray * getSysVarFloatArray (int gKey)
{
switch (gKey)
{
case 0:
return sysvar::FMW1::KeyFloatArray;
case 1:
return sysvar::DCM::SpeedSignalFloatArray;
default:
return sysvar::Engine::EngineFloatArray;
}
}
sysGetVariableInt
使用方法
函数作用
返回 32 位整数类型变量的值。直接访问系统变量中的值。该函数还可用于 struct 或泛型数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。 也可以简单地将结果转换为 dword。
示例
on key 'a'
{
sysvarInt * sv1; //defines a local system variable 'sv1' with the system variable type 'sysvarInt'
int valueSysVar;
sv1 = getSysVar(0);
write("Variable is %s, Value is %d", sv1.name, @sv1);
//@sv1++;
sysSetVariableInt(sv1, @sv1+1);
write("Variable is %s, Value is higher: %d", sv1.name, @sv1);
sv1 = getSysVar(1);
write("Variable is %s, Value is %d", sv1.name, @sv1);
sv1 = getSysVar(2);
valueSysVar = sysGetVariableInt(sv1);
write("Variable is %s, Value is %d", sv1.name, valueSysVar);
}
sysvarInt * getSysVar(int aKey)
{
switch (aKey)
{
case 0:
return sysvar::FMW1::Key;
case 1:
return sysvar::DCM::SpeedSignal;
default:
return sysvar::Engine::EngineStateSwitch;
}
}
sysGetVariableLongArray
使用方法
函数作用
如果系统变量的实际数组大小大于作为参数给出的数组大小,则 values 数组中直到作为参数给出的数组大小的所有元素都将接收系统变量的当前值。 values 数组中超出作为参数给出的数组大小的元素将保持不变。如果系统变量的实际数组大小小于作为参数给出的数组大小,则 values 数组中的其他元素将被设置为 0。超出作为参数给出的数组大小的值数组将保持不变。切勿将大于值数组实际大小的数组大小作为参数提供,这将导致不可预测的行为。
示例
on key 'f'
{
sysvarIntArray * sv1;
long lVarArr [5] = {7, 7, 7, 7, 7};
sv1 = getSysVarIntArray(0);
write("Variable is %s%s, Value is %d", sv1.name, "[0]", @sv1[0]);
sysSetVariableLongArray(sv1,lVarArr, elcount(lVarArr));
write("Variable is %s%s, Value is: %d", sv1.name, "[0]",@sv1[0]);
sv1 = getSysVarIntArray(1);
write("Variable is %s%s, Value is %d", sv1.name, "[0]", @sv1[0]);
sv1 = getSysVarIntArray(2);
sysGetVariableLongArray (sv1, lVarArr, elcount(lVarArr));
write("Variable is %s%s, Value is %d", sv1.name, "[0]",lVarArr[0]);
}
sysvarIntArray * getSysVarIntArray (int fKey)
{
switch (fKey)
{
case 0:
return sysvar::FMW1::KeyIntegerArray;
case 1:
return sysvar::DCM::SpeedSignalIntegerArray;
default:
return sysvar::Engine::EngineIntegerArray;
}
}
sysGetVariableLongLong
使用方法
函数作用
返回 64 位整数类型变量的值。直接访问系统变量中的值。该函数还可用于 struct 或泛型数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。 你可以简单地将结果转换为 dword。
示例
sysGetVariableLongLong(sysvar::MyNamespace::Int64Var);
sysGetVariableMax
使用方法
函数作用
检索变量的最大值。直接访问系统变量中的值。该函数还可用于结构类型或泛型数组的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。
sysGetVariableMin
使用方法
函数作用
检索整数或整数数组类型变量的最小值。 直接访问系统变量的值。该函数还可用于结构类型或泛型数组的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。
sysGetVariableQWord
使用方法
函数作用
返回无符号 64 位整数类型变量的值。直接访问系统变量中的值。该函数还可用于结构类型或泛型数组的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。
示例
sysGetVariableQWord(sysvar::MyNamespace::UInt64Var);
sysGetVariableString
使用方法
函数作用
返回字符串 (char[]) 类型变量的值。直接访问系统变量中的值。 使用此变体无法访问整个字符串。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
on key 'd'
{
sysvarString * svString1;
char valueSysVarString[100];
char buf[100];
svString1 = getSysVarString(0);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
sysSetVariableString(svString1, "OFF");
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is now: %s", svString1.name, buf);
svString1 = getSysVarString(1);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
svString1 = getSysVarString(2);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
}
sysvarString * getSysVarString(int cKey)
{
switch (cKey)
{
case 0:
return sysvar::FMW1::KeyString;
case 1:
return sysvar::DCM::SpeedSignalString;
default:
return sysvar::Engine::EngineStateString;
}
}
sysGetVariableSVType
使用方法
函数作用
获取编码为长整数的系统变量的类型。具体的返回值如下:
0: Invalid
1: Double (64 Bit)
2: Integer (32 Bit)
3: String
4: Double Array
5: Integer Array
6: Integer (64 Bit)
7: Data
示例
long t1, t2;
t1 = sysGetVariableSVType(lookupSysvar("mysysvar"));
t2 = sysGetVariableSVType(sysvar::mysysvar);
sysGetVariableTimeNS
使用方法
函数作用
返回上次更新变量值的时间戳。直接访问系统变量中的值。
示例
int64 timeStamp;
timeStamp = sysGetVariableTimeNS(sysvar::MyNamespace::FloatVar);
sysGetVariableValueForDescription
使用方法
函数作用
检索 long 或 long array 类型的系统变量的值描述的值。 这样就可以访问系统变量的值表了。
示例
long val;
sysGetVariableValueForDescription("Dynamic", "IntVar", "Zero", val);
Set Value of a Variable
sysSetAnalysisOnlyVariable
使用方法
函数作用
确定变量是否旨在用于分析目的。如果这是真的(anlyzLocal 设置为 1),并且变量在测量设置的 CAPL 程序中更改,则值更改不会传输到实时部分 CANoe,但在分析部分立即使用。 这是默认值。如果为false(anlyzLocal 设置为0),则始终将值更改传输到实时部分。
示例
sysSetAnalysisOnlyVariable(sysvar::MyNamespace::StringVar, 1);
sysSetVariableData
使用方法
函数作用
设置数据、字符串、结构或通用数组类型的变量的值。该函数还可用于结构或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接将元素名称提供给函数而不是使用字符串,则在名称之前添加 sysvarMember:: 而不是 sysvar::。对于字符串类型的变量,将设置字符串的原始字节。 字符串值必须以 UTF-8 编码或以计算机的当前活动代码页编码,具体取决于 CANoeOptions(字符串编码)中的设置。 终止 0 是可选的。
示例
on key 'e'
{
sysvarData * svData1;
char valueSysVarData[100];
byte buf[2];
long size = 2;
long copiedBytes;
byte data[2] = {0xAF, 0xEF};
svData1 = getSysVarData(0);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
sysSetVariableData(svData1, data, size);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is now: %x", svData1.name, buf[0]);
svData1 = getSysVarData(1);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
svData1 = getSysVarData(2);
sysGetVariableData(svData1, buf, copiedBytes);
write("Variable is %s, Value is %x", svData1.name, buf[0]);
}
sysvarData * getSysVarData(int eKey)
{
switch (eKey)
{
case 0:
return sysvar::FMW1::KeyData;
case 1:
return sysvar::DCM::SpeedSignalData;
default:
return sysvar::Engine::EngineStateData;
}
}
sysSetVariableDescriptionForValue
使用方法
函数作用
为 long 或 long array 类型的系统变量的特定值设置描述。 通过这种方式,可以为使用sysDefineVariableInt/sysDefineVariableIntArray 创建的变量定义值表。
示例
sysSetVariableDescriptionForValue("Dynamic", "IntVar", 0, "Zero");
sysSetVariableDWord
使用方法
函数作用
设置类型为无符号 32 位整数的变量的值。 从系统变量直接访问值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果您直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
sysSetVariableDWord(sysvar::MyNamespace::UInt32Var, 1);
sysSetVariableFloat
使用方法
函数作用
设置双精度型变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果您直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
on key 'c'
{
sysvarFloat * svFloat1; //defines a local system variable 'sv1Float' with the system variable type 'sysvarFloat'
float valueSysVar;
svFloat1 = getSysVarFloat(0);
//@svFloat1 = 1.5;
write("Variable is %s, Value is %7.3f", svFloat1.name, @svFloat1);
//@svFloat1 = @svFloat1*2.5;
sysSetVariableFloat(svFloat1, @svFloat1*2.5);
write("Variable is %s, Value is higher: %7.3f", svFloat1.name, @svFloat1);
svFloat1 = getSysVarFloat(1);
write("Variable is %s, Value is %7.3f", svFloat1.name, @svFloat1);
svFloat1 = getSysVarFloat(2);
valueSysVar = sysGetVariableFloat(svFloat1);
write("Variable is %s, Value is %d", svFloat1.name, valueSysVar);
}
sysvarFloat * getSysVarFloat(int cKey)
{
switch (cKey)
{
case 0:
return sysvar::FMW1::KeyFloat;
case 1:
return sysvar::DCM::SpeedSignalFloat;
default:
return sysvar::Engine::EngineFloat;
}
}
sysSetVariableFloatArray
使用方法
函数作用
设置 float[] 类型变量的值。只有当作为参数给出的数组大小等于系统变量的实际数组大小时,调用才会成功(您不能动态更改该大小)。 系统变量的当前值将被设置为值数组中的元素,范围从 0 到 arraySize。永远不要将大于值数组实际大小的数组大小作为参数提供,这会导致不可预测的行为。
示例
on key 'g'
{
sysvarFloatArray * sv1;
float fVarArr [5] = {7.3, 7.3, 7.3, 7.3, 7.3};
sv1 = getSysVarFloatArray(0);
write("Variable is %s%s, Value is %2.1lf", sv1.name, "[0]", @sv1[0]);
sysSetVariableFloatArray(sv1,fVarArr, elcount(fVarArr));
write("Variable is %s%s, Value is: %2.1lf", sv1.name, "[0]",@sv1[0]);
sv1 = getSysVarFloatArray(1);
write("Variable is %s%s, Valgue is %2.1lf", sv1.name, "[0]", @sv1[0]);
sv1 = getSysVarFloatArray(2);
sysGetVariableFloatArray (sv1, fVarArr, elcount(fVarArr));
write("Variable is %s%s, Value is %2.1lf", sv1.name, "[0]",fVarArr[0]);
}
sysvarFloatArray * getSysVarFloatArray (int gKey)
{
switch (gKey)
{
case 0:
return sysvar::FMW1::KeyFloatArray;
case 1:
return sysvar::DCM::SpeedSignalFloatArray;
default:
return sysvar::Engine::EngineFloatArray;
}
}
sysSetVariableInt
使用方法
函数作用
设置 32 位整数类型变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果你直接给函数提供元素名称而不是使用字符串,在名称前面加上 sysvarMember:: 而不是 sysvar::。该函数也可以用于无符号整数类型的变量。 您可以简单地将该值转换为 long。
示例
on key 'a'
{
sysvarInt * sv1; //defines a local system variable 'sv1' with the system variable type 'sysvarInt'
int valueSysVar;
sv1 = getSysVar(0);
write("Variable is %s, Value is %d", sv1.name, @sv1);
//@sv1++;
sysSetVariableInt(sv1, @sv1+1);
write("Variable is %s, Value is higher: %d", sv1.name, @sv1);
sv1 = getSysVar(1);
write("Variable is %s, Value is %d", sv1.name, @sv1);
sv1 = getSysVar(2);
valueSysVar = sysGetVariableInt(sv1);
write("Variable is %s, Value is %d", sv1.name, valueSysVar);
}
sysvarInt * getSysVar(int aKey)
{
switch (aKey)
{
case 0:
return sysvar::FMW1::Key;
case 1:
return sysvar::DCM::SpeedSignal;
default:
return sysvar::Engine::EngineStateSwitch;
}
}
sysSetVariableLongArray
使用方法
函数作用
设置 int[] 类型变量的值。只有当作为参数给出的数组大小等于系统变量的实际数组大小时,调用才会成功(您不能动态更改该大小)。 系统变量的当前值将被设置为值数组中的元素,范围从 0 到 arraySize。永远不要将大于值数组实际大小的数组大小作为参数提供,这会导致不可预测的行为 .
示例
on key 'f'
{
sysvarIntArray * sv1;
long lVarArr [5] = {7, 7, 7, 7, 7};
sv1 = getSysVarIntArray(0);
write("Variable is %s%s, Value is %d", sv1.name, "[0]", @sv1[0]);
sysSetVariableLongArray(sv1,lVarArr, elcount(lVarArr));
write("Variable is %s%s, Value is: %d", sv1.name, "[0]",@sv1[0]);
sv1 = getSysVarIntArray(1);
write("Variable is %s%s, Value is %d", sv1.name, "[0]", @sv1[0]);
sv1 = getSysVarIntArray(2);
sysGetVariableLongArray (sv1, lVarArr, elcount(lVarArr));
write("Variable is %s%s, Value is %d", sv1.name, "[0]",lVarArr[0]);
}
sysvarIntArray * getSysVarIntArray (int fKey)
{
switch (fKey)
{
case 0:
return sysvar::FMW1::KeyIntegerArray;
case 1:
return sysvar::DCM::SpeedSignalIntegerArray;
default:
return sysvar::Engine::EngineIntegerArray;
}
}
sysSetVariableLongLong
使用方法
函数作用
设置 64 位整数类型变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果您直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。 该函数还可用于无符号 64 位整数类型的变量。 您可以简单地将该值转换为 int64。
示例
int64 llVar;
sysSetVariableLongLong(sysvar::MyNamespace::Int64Var, llVar);
sysSetVariableQWord
使用方法
函数作用
设置类型为无符号 64 位整数的变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果您直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
sysSetVariableQWord(sysvar::MyNamespace::UInt64Var, 1);
sysSetVariableString
使用方法
函数作用
设置字符串 (char[]) 类型变量的值。直接访问系统变量中的值。 该函数还可用于结构类型或通用数组类型的系统变量的特定元素。 为此,将元素添加到变量的名称中。 如果您直接将元素名称提供给函数而不是使用字符串,请在名称前加上 sysvarMember:: 而不是 sysvar::。
示例
on key 'd'
{
sysvarString * svString1;
char valueSysVarString[100];
char buf[100];
svString1 = getSysVarString(0);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
sysSetVariableString(svString1, "OFF");
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is now: %s", svString1.name, buf);
svString1 = getSysVarString(1);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
svString1 = getSysVarString(2);
sysGetVariableString(svString1, buf, elcount(buf));
write("Variable is %s, Value is %s", svString1.name, buf);
}
sysvarString * getSysVarString(int cKey)
{
switch (cKey)
{
case 0:
return sysvar::FMW1::KeyString;
case 1:
return sysvar::DCM::SpeedSignalString;
default:
return sysvar::Engine::EngineStateString;
}
}
Structs of System Variable
sysBeginVariableStructUpdate
使用方法
函数作用
开始更新 struct 或泛型数组类型的系统变量的多个元素。使用此函数和相应的 sysEndVariableStructUpdate 同时更改多个元素,而变量不具有中间值,其中仅更改了某些元素。 每次调用后都必须调用 sysEndVariableStructUpdate,否则变量值不会改变。
示例
sysBeginVariableStructUpdate(sysvar::XCP::ECU_2::KL2);
sysEndVariableStructUpdate
使用方法
函数作用
结束对 struct 或泛型数组类型的系统变量的多个元素的更新。使用此函数和相应的 sysBeginVariableStructUpdate 同时更改多个元素,而变量不具有中间值,其中仅更改了某些元素。
示例
sysEndVariableStructUpdate(sysvar::XCP::ECU_2::KL2);
sysGetVariableMemberPhys
使用方法
函数作用
检索结构或泛型数组类型变量的特定元素的物理值。
示例
double val;
sysGetVariableMemberPhys(sysvarMember::XCP::ECU_2::KL2.Curve2[0], val);
sysSetVariableMemberPhys
使用方法
函数作用
设置结构或泛型数组类型变量的特定元素的物理值。
示例
sysSetVariableMemberPhys(sysvarMember::XCP::ECU_2::KL2.Curve2[0], 1.2);
Variable filters
sysCreateVariableFilter
使用方法
函数作用
在调用函数的节点后面创建一个新的变量过滤器。 如果未提供 filterName,则创建具有空名称的默认过滤器。
示例
long result;
//create the default filter as a Stop Filter.
result = sysCreateVariableFilter(0);
sysFilterAddNamespace
使用方法
函数作用
向变量过滤器添加命名空间。 如果没有给出 filterName,命名空间被添加到默认过滤器中。
示例
long result;
//create the default filter as a Stop Filter
result = sysCreateVariableFilter(0);
//add a namespace to the filter.
result = sysFilterAddNamespace(“myNamespace”);
sysFilterAddVariable
使用方法
函数作用
添加一个变量一个变量过滤器。 如果没有给出 filterName,该变量将被添加到默认过滤器中。
示例
long result;
//create default filter as Stop Filter
result = sysCreateVariableFilter(0);
//add a variable that should be stopped by the filter
result = sysFilterAddVariable(sysvar::myNamespace::myVariable);
sysFilterRemoveNamespace
使用方法
函数作用
从变量过滤器中删除命名空间。 如果未给出 filterName,则名称空间将从默认过滤器中删除。
示例
long result;
//remove a namespace from the default filter.
result = sysFilterRemoveNamespace(“myNamespace”);
sysFilterRemoveVariable
使用方法
函数作用
从变量过滤器中删除变量。 如果未给出 filterName,则该变量将从默认过滤器中删除。
示例
long result;
//remove a variable from the default filter
result = sysFilterRemoveVariable(sysvar::myNamespace::myVariable);
sysSetVariableFilterActive
使用方法
函数作用
激活或停用变量过滤器。 如果未给出 filterName,则默认过滤器会受到影响。
示例
long result;
//create the default filter as a Stop Filter.
result = sysCreateVariableFilter(0);
//deactivate the default filter.
result = sysSetVariableFilterActive(0);