Как установить переменную env в коде CAPL из входящего сигнала?

Я использую CANoe, и я хочу добавить узел, который принимает сигналы и изменить переменные env

используя кодирование CAPL конечно, например:

on signal Signal_Name
{
   set env variable = SET;
}

1 ответ

Ты можешь использовать,

@Env_Variable_Name = 1;

Например, у меня есть переменная среды с именем Env_DrvDrSw

on key 'a'
{
    @Env_DrvDrSw = 1; 
}

Но у CAPL есть небольшое ограничение, поскольку CAPL - это программирование на основе событий. on envVar Env_DrvDrSw часть в вашем коде CAPL будет выполнена после выполнения on key 'a' событие. Вы не можете ожидать, что он будет работать как язык Си.

Надеюсь, я прояснил ваш вопрос. Поправьте меня если я ошибаюсь.

Здесь нет on signal * процедура в CAPL, в связи с тем, что сигналы всегда передаются в виде пакетов сообщения. Итак, вы будете использовать что-то вроде этого:

on signal ( LightSwitch::OnOff | MotorSwitch::OnOff )
{
  putValue (yourEnvironmentVariable, this);      // Maybe phys, if applies
}

Обратите внимание, что on envVar yourEnvironmentVariable/* срабатывает сразу после этого звонка. Наконец, on envVar * Событие всегда вызывается при доступе к переменной среды, это означает, что ему все равно, изменилось или нет действительное значение, присвоенное переменной.

Согласно рекомендациям, и благодаря @M.Spiller, процедура вызывается, как только один из сигналов изменяется.

Другие вопросы по тегам