0

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

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

我已经尝试了很多东西并且效果很好,但是现在我想测试“消息丢失”。

我需要这样的东西。

CAN 1 正在发送 10 次测试消息。3次将有一条消息丢失。

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

我需要类似 WaitForMessage(int aTimeOut, Message yourMessage) 的东西,例如,0 表示成功访问消息,-1 表示超时。

    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);
    }
  }
4

1 回答 1

1

有什么问题?只需按照帮助中的说明使用 CAPL 函数testWaitForMessage

您正在使用 Test-Node,因为您的代码中有TestStepFail/Pass调用,因此您在控制测试序列方面所需的一切都以test ...

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

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

anzahlAnBotschaften = 在德语中,这意味着收到的消息数。因此,如上所述,当您将收到 10 条消息中的 7 条消息(anzahlAnBotschaften == 7)时,此条件为false

于 2018-01-08T12:25:48.977 回答