首页 文章

CAPL Canoe等待特定的can消息

提问于
浏览
0

我目前正在尝试为控制器测试自动生成代码 .

测试将在带有Capl的CANoe中完成 .

我已经尝试了很多东西并且它运行良好,但现在我想测试一条“消息丢失” .

我需要这样的东西 .

CAN 1正在发送10次测试消息 . 3次会有消息丢失 .

接收信号的CAN 2必须以特定值对此作出反应 .

我需要WaitForMessage(int aTimeOut,Message yourMessage)之类的东西,例如0表示成功访问Message或-1表示timeOut .

on timer sendMessage
  {
    if(anzahlAnBotschaften > 0) // amount of sent Messages
    {
      if(anzahlAnBotschaften % 3 == 0) // 3 times message lost
      {
        botschaftWirdGesendet = 0;  
        lRet = ???? here is the part where i want to wait for a an answer from CAN2 
        if(lRet != 0)
        {
          TestStepPass("010.1", "SNA was triggered");
        }
        else
        {
          TestStepFail("010.1", "Timeout was triggered, but no SNA was found");
         }
      }
      else
      {
        botschaftWirdGesendet = 1;
        output(sendingCan_BrkSys);
        lRet = TestGetWaitEventMsgData(receivingCan_aMessage);
        if(lRet == 0) 
        {
          // same for the positive case
        }
      }
      anzahlAnBotschaften -- ;
      setTimer(botschaftsAusfall,20);
    }
  }

1 回答

  • 1

    有什么问题?只需使用CAPL函数testWaitForMessage,如帮助中所述 .

    您正在使用Test-Node,因为您的代码中存在TestStepFail / Pass调用,因此在控制测试序列方面您需要的所有内容都以测试开始...

    附:别的,我怀疑使用这段代码你可以检测到评论中描述的内容

    if(anzahlAnBotschaften % 3 == 0) // 3 times message lost
    

    anzahlAnBotschaften =德语,表示收到的消息数 . 因此,如上所述,当您从10条消息(anzahlAnBotschaften == 7)收到7时,这个条件是假的 .

相关问题