【问题标题】:how to define a CAPL function taking a sysvar argument如何定义采用 sysvar 参数的 CAPL 函数
【发布时间】:2019-04-11 20:37:24
【问题描述】:

在 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) 进行测试。

【问题讨论】:

    标签: capl canoe


    【解决方案1】:

    是的,你可以。只需进一步定义您的 sysvar 类型,而不仅仅是 sysvar。

    系统变量,带有类型和*的指示。可能的类型: 数据、整数、浮点数、字符串、整数数组和浮点数组。例子 声明:sysvarFloat * sv

    您没有指定 CANoe SP 版本,因此旧版本可能不支持它,但为确保这一点,请在 Help/Index 中搜索 Function parameter,然后您应该会得到您可以在当前 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]。联想 字段会自动作为参考传输。

    ......

    • 系统变量,带有类型和 * 的指示。可能的类型: 数据、整数、浮点数、字符串、整数数组和浮点数组。例子 声明:sysvarFloat * sv

    【讨论】:

    • 谢谢。我在原始问题中添加了确切的版本号。我在 CANoe 9.0.53(SP1) 中使用 sysvarFloat* 成功编译了一个示例函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多