CAPL Canoe 等待特定的 can 消息

CAPL Canoe wait for a specific can message

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

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

我已经尝试了很多东西而且效果很好,但现在我想 测试 "message lost".

我需要这样的东西。

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

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

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

p.s。别的,我怀疑使用这段代码你能检测到评论

中描述的内容
if(anzahlAnBotschaften % 3 == 0) // 3 times message lost

anzahlAnBotschaften = 在 german 中这表示收到消息的计数。因此,如上所述,当您从 10 条消息中收到 7 条消息时(anzahlAnBotschaften == 7),则此条件为 false.