【问题标题】:CAPL block node from sending messagesCAPL 阻止节点发送消息
【发布时间】:2019-12-06 05:16:54
【问题描述】:

我有一个 CAPL 文件附加到 CAN 节点,该节点使用“输出”功能定期发送消息。如何使用第二个 CAPL 文件来阻止发送消息的节点(同时执行节点所做的一切)?

【问题讨论】:

    标签: can-bus capl canoe


    【解决方案1】:

    您可以向您的节点添加一个输出过滤器,如下所示,以阻止消息。

    【讨论】:

      【解决方案2】:

      您可以在模拟中创建一个 sysvar,它将用作模拟 *.can 网络节点中的开关。

      您只需将输出代码调整为您创建的系统变量的值。

      if (Sysvar_SimEnabled)
      {
        output(message);
        output(message1);
        output(message3);
      } 
      

      这个Sysvar_SimEnabled 将是一个全局变量,因此可以设置为来自另一个*.can CAPL 网络节点的任何值。

      【讨论】:

        【解决方案3】:

        您可以通过取消每条消息的计时器来停止所有循环消息

        示例:

        message can1.0x12 message1;
        msTimer tmessage1;
        
        on timer tmessage1
        {
          output(message1);                 // sending message
          setTimer(tmessage1,100);          // set the cyclic time as 100ms
        }
        
        
        on envVar envmessage1
        {
          if (getValue(envmessage1) == 1)
          {
            setTimer(tmessage1,100);        // set and start the cyclic time as 100ms
          }
          else
          {
            cancelTimer(tmessage1);         // cancel the cyclic timer 
          }
        }
        

        如果你只是在另一个节点做envmessage1 = 0,它会停止消息,就像所有消息一样,必须写环境变量,然后你可以控制其他节点消息。

        【讨论】:

          猜你喜欢
          • 2018-06-27
          • 2018-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-30
          • 2018-11-23
          • 2020-07-21
          • 2021-08-06
          相关资源
          最近更新 更多