Сценарии CAPL получают сообщение один раз - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть требование, согласно которому каждый сигнал внутри кадра будет отправляться при инициализации ECU с начальным значением. поэтому мне нужно захватить это значение, используя CAPL, я определил переменную следующим образом:

first_reception = 0 ;

, а затем внутри события сообщения я получаю начальное значение, если эта переменная равна нулю, и сохраняю это системная переменная, затем установите first_reception в 1:

{

 if (first_reception == 0 )
 {
   @sysvar::mymsg::signal_initialValue = this.signal;
   first_reception = 1;

 }

}

проблема здесь в том, что у меня много кадров, поэтому мне интересно, есть ли другой способ вызвать событие один раз, чтобы мне не пришлось определить переменную для каждого кадра

1 Ответ

0 голосов
/ 25 апреля 2020

Решение вашей проблемы может быть достигнуто с использованием значений по умолчанию.

Вам необходимо сохранить начальное значение некоторых сигналов в системных переменных. Вы можете определить значения по умолчанию для системных переменных, которые вы создаете: введите значение, которого ваши сигналы никогда не достигнут, скажем -999 или что-то еще.

Затем избавьтесь от first_reception и просто:

if (yoursysvar == -999)
{
    // set your sysvar to new value
    // you'll never enter the if again
}
...