CAPL: Как мне получить метку времени сообщения, содержащего имя сигнала?

Я уверен, что это намного проще, чем я себе представляю, но ...

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

on signal_update XXX
{ 
   if ($XXX == 42) {
      message * msg  = { DLC = 15 };
  
      getThisMessage(msg, 15);
  
      write("Time: %f", messageTimeNS(msg));
   }
}

Итак, учитывая обновление сигнала, как мне получить содержащееся сообщение и его временную метку? (Кстати, 'DLC = 15' - это просто максимальное значение, которое компилятор позволил мне включить. Я не уверен в правильном значении.)


person InformationEntropy    schedule 19.08.2020    source источник
comment
Вам нужно само сообщение или достаточно временной метки?   -  person M. Spiller    schedule 19.08.2020
comment
Прямо сейчас, только отметка времени. Это столько же необходимо для вывода, сколько для меня понимания программирования CAPL и того, какая информация доступна различным обработчикам. Другой подход, который я мог бы сработать, - это перехватить сообщение, содержащее сигнел (временная метка там существует!), И распаковать сообщение, чтобы получить сигналы, но я еще не видел, как это сделать.   -  person InformationEntropy    schedule 21.08.2020


Ответы (1)


Вы всегда можете получить текущее время моделирования, используя

timeNowNS();

пока вы находитесь в блоке on signal_update ..., возвращаемое время - это время, которое вызвало выполнение обработчика событий; в этом случае, когда было получено сообщение, содержащее интересующий сигнал.

Время симуляции не изменится во время выполнения обработчиков событий.

person M. Spiller    schedule 21.08.2020
comment
Ага. Это то, что я искал. Спасибо! - person InformationEntropy; 24.08.2020