CAPL 阻止节点发送消息

CAPL block node from sending messages

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

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

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

示例:

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,它会停止消息,就像所有消息一样,必须写环境变量,然后你可以控制其他节点消息。

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

您只需条件输出代码为您创建的系统变量的值。

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

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