如何定义一个带有 sysvar 参数的 CAPL 函数
how to define a CAPL function taking a sysvar argument
在Vector CANoe中,是否可以像系统函数那样定义一个接受系统变量参数的函数TestWaitForSignalMatch()
?
对于我的用例,提供系统变量的当前值是不够的,因为我想将系统变量传递给 TestWaitForSignalMatch()
或类似的系统函数。
CANoe 帮助似乎显示示例:
long TestWaitForSignalMatch (Signal aSignal, float aCompareValue, dword aTimeout); // form 1
long TestWaitForSignalMatch (sysvar aSysVar, float aCompareValue, dword aTimeout); // form 3
我这样试过
void foo(sysvar aSysvar) {}
^
或这个
void foo(sysvar *aSysvar) {}
^
但在这两种情况下,我都在 sysvar
关键字的标记位置遇到解析错误。
我成功创建了带有信号参数的函数,但与 CANoe 帮助中的语法不同,我必须使用指针。
这有效:
void foo(signal *aSignal) {}
显然帮助中的文档在这一点上是不正确的。当我省略 *
时,它会导致 signal
关键字后出现解析错误,如帮助中所示:
void bar(signal aSignal) {}
^
那么定义带有 sysvar 参数的函数的正确语法是什么? (如果可能的话)
如果版本很重要,我目前正在使用 CANoe 9.0.53(SP1)、9.0.135(SP7) 或 10.0.125(SP6) 进行测试。
是的,你可以。只需进一步定义您的 sysvar 类型,而不仅仅是 sysvar。
System variables, with indication of type and *. Possible types:
Data, Int, Float, String, IntArray, and FloatArray. Example
declaration: sysvarFloat * sv
您没有指定CANoe SP版本,所以旧版本可能不支持它,但是为了确定这一点,在[=35]中搜索函数参数 =],那么您应该获得可在当前 CANoe 设置中使用的可能功能参数的完整列表。应该这样开始:
- 整数(byte、word、dword、int、long、qword、int64)示例
声明:long 1
- 整数(byte、word、dword、int、long、qword、int64)示例
声明:long 1
- 单个字符(char)声明示例:char ch
- 枚举示例声明:枚举颜色 c
- 关联字段示例声明:int m[float]。关联的
字段会自动传输为参考。
..............
- 系统变量,带有类型和*的指示。可能的类型:
Data、Int、Float、String、IntArray 和 FloatArray。例子
声明:sysvarFloat * sv
在Vector CANoe中,是否可以像系统函数那样定义一个接受系统变量参数的函数TestWaitForSignalMatch()
?
对于我的用例,提供系统变量的当前值是不够的,因为我想将系统变量传递给 TestWaitForSignalMatch()
或类似的系统函数。
CANoe 帮助似乎显示示例:
long TestWaitForSignalMatch (Signal aSignal, float aCompareValue, dword aTimeout); // form 1
long TestWaitForSignalMatch (sysvar aSysVar, float aCompareValue, dword aTimeout); // form 3
我这样试过
void foo(sysvar aSysvar) {}
^
或这个
void foo(sysvar *aSysvar) {}
^
但在这两种情况下,我都在 sysvar
关键字的标记位置遇到解析错误。
我成功创建了带有信号参数的函数,但与 CANoe 帮助中的语法不同,我必须使用指针。 这有效:
void foo(signal *aSignal) {}
显然帮助中的文档在这一点上是不正确的。当我省略 *
时,它会导致 signal
关键字后出现解析错误,如帮助中所示:
void bar(signal aSignal) {}
^
那么定义带有 sysvar 参数的函数的正确语法是什么? (如果可能的话)
如果版本很重要,我目前正在使用 CANoe 9.0.53(SP1)、9.0.135(SP7) 或 10.0.125(SP6) 进行测试。
是的,你可以。只需进一步定义您的 sysvar 类型,而不仅仅是 sysvar。
System variables, with indication of type and *. Possible types: Data, Int, Float, String, IntArray, and FloatArray. Example declaration: sysvarFloat * sv
您没有指定CANoe SP版本,所以旧版本可能不支持它,但是为了确定这一点,在[=35]中搜索函数参数 =],那么您应该获得可在当前 CANoe 设置中使用的可能功能参数的完整列表。应该这样开始:
- 整数(byte、word、dword、int、long、qword、int64)示例 声明:long 1
- 整数(byte、word、dword、int、long、qword、int64)示例 声明:long 1
- 单个字符(char)声明示例:char ch
- 枚举示例声明:枚举颜色 c
- 关联字段示例声明:int m[float]。关联的 字段会自动传输为参考。
..............
- 系统变量,带有类型和*的指示。可能的类型: Data、Int、Float、String、IntArray 和 FloatArray。例子 声明:sysvarFloat * sv