Как установить переменную 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, процедура вызывается, как только один из сигналов изменяется.