CAPL:如何获取包含信号名称的消息的时间戳?

问题描述

我敢肯定,这比我想像的要简单得多,但是...

在CAPL中,我试图输出具有特定值的信号的时间戳:

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

因此,给定信号更新后,如何获取包含消息及其时间戳? (顺便说一句,“ DLC = 15”只是编译器让我包括的最大值。我不确定正确的值。)

解决方法

您始终可以通过使用

来获得当前的仿真时间
timeNowNS();

on signal_update ...块中时,返回的时间是导致事件处理程序执行的时间;在这种情况下,当收到包含感兴趣信号的消息时。

在执行事件处理程序期间,仿真时间不会改变。