如何在仿真中接收消息,是否在CAPL中进行检查?

问题描述

我想在CAPL中检查消息是否正在仿真中接收,以及是否不在跟踪中,所以我想发送新消息。我试过使用类似的功能。我要检查特定消息是否正在接收? TestWaitForPDU(); TestWaitFormessage(msg,2000)等,但是在简单的配置中,它们不起作用。

我也尝试过使用istimerActive()或istimerunning(),但是这些功能不会检查消息是否已停止接收或发送。

我在通用节点上工作。我已经尝试过类似的事情

on timer tslpack
{
  int sleepack;
   long Systemtime[9];
  sleepack= isTimerActive(tslpack);
   //write("Bus Active");
    
 // write("Running Status %d",tslpack.isRunning());
 

 

        if(sleepack==1)
          {
            write("timer cancelled");
            cancelTimer(tslpack);
            Settimer(tslpack,100);
          }
          else
          {
            result=1;
        if(result ==1)
        {
         
        write("Bus Sleep");
          sleeptime=timeNow();
    
    
      
       result = 0;
       }

}

解决方法

您已经提到您不是在测试节点中编写代码,而是要在仿真节点中编写代码。显然,应该按照测试功能名称显示功能TestWaitForPDU();TestWaitFormessage(msg,2000)
我想您正在等待CAN消息,因此为您提供了示例代码。

variables
{
  msTimer TimerToCheckMessage;
  message CAN1.0x123 TxMsg;    //Message which you want to send
}

on start
{
  setTimer(TimerToCheckMessage,103);
  TxMsg.dlc = 4;
}

on message CAN1.0x1            //Message which you want to check
{
  setTimer(TimerToCheckMessage,103);
}

on timer TimerToCheckMessage
{
  output(TxMsg);
  setTimer(TimerToCheckMessage,103);
}