#can-bus #capl #canoe
#can-bus #capl #каноэ
Вопрос:
Я уверен, что это намного проще, чем я пытаюсь представить, но…
В CAPL я пытаюсь вывести временную метку для сигналов, которые имеют определенное значение:
on signal_update XXX
{
if ($XXX == 42) {
message * msg = { DLC = 15 };
getThisMessage(msg, 15);
write("Time: %f", messageTimeNS(msg));
}
}
Итак, учитывая обновление сигнала, как мне получить содержащее сообщение и его временную метку? (Кстати, ‘DLC = 15’ — это просто максимальное значение, которое компилятор позволил мне включить. Я не уверен в правильном значении.)
Комментарии:
1. Вам нужно само сообщение или достаточно временной метки?
2. Прямо сейчас, просто временная метка. Это такая же «необходимость» для вывода, как и для меня понимание программирования на CAPL и того, какая информация доступна различным обработчикам. Другой подход, который, по моему мнению, мог бы сработать, заключался бы в том, чтобы перехватить сообщение, содержащее signel (там существует временная метка!), и распаковать сообщение, чтобы получить сигналы, но я пока не видел, как это сделать.
Ответ №1:
Вы всегда можете получить текущее время моделирования, используя
timeNowNS();
пока вы находитесь в on signal_update ...
блоке, возвращаемое время — это время, которое вызвало выполнение обработчика событий; в данном случае, когда было получено сообщение, содержащее интересующий сигнал.
Время моделирования не изменится во время выполнения обработчиков событий.
Комментарии:
1. Да. Это то, что я искал. Спасибо!