как определить функцию CAPL с аргументом sysvar

Можно ли в 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).


person Bodo    schedule 08.11.2018    source источник


Ответы (1)


Да, ты можешь. Просто определите немного подробнее свой тип sysvar, а не только sysvar.

Системные переменные с указанием типа и *. Возможные типы: Data, Int, Float, String, IntArray и FloatArray. Пример объявления: sysvarFloat * sv

Вы не указали версию CANoe SP, поэтому она может не поддерживаться в более старых версиях, но чтобы убедиться в этом, найдите параметр функции в справке / указателе, после чего вы должны получить полный список возможных функциональных параметров, которые вы можете использовать в текущей настройке CANoe. Должно начаться так:

  • Целые числа (byte, word, dword, int, long, qword, int64) Пример объявления: long 1
  • Целые числа (byte, word, dword, int, long, qword, int64) Пример объявления: long 1
  • Отдельные символы (char) Пример объявления: char ch
  • Enums Пример объявления: enum Colors c
  • Ассоциативные поля Пример объявления: int m [float]. Ассоциативные поля автоматически передаются как справочные.

.............

  • Системные переменные с указанием типа и *. Возможные типы: Data, Int, Float, String, IntArray и FloatArray. Пример объявления: sysvarFloat * sv
person VioletVynil    schedule 09.11.2018
comment
Спасибо. Я добавил точные номера версий к своему исходному вопросу. Я успешно скомпилировал пример функции с помощью sysvarFloat * в CANoe 9.0.53 (SP1). - person Bodo; 09.11.2018