как определить функцию CAPL, принимающую аргумент sysvar - PullRequest
0 голосов
/ 08 ноября 2018

В 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).

1 Ответ

0 голосов
/ 09 ноября 2018

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

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

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

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

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

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