0

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

4

3 回答 3

2

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

在此处输入图像描述

于 2016-10-27T13:29:20.320 回答
1

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

您只需要将输出代码设置为您创建系统变量的值。

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

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

于 2018-09-21T14:49:31.403 回答
1

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

例子:

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

于 2017-07-25T14:37:36.537 回答