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 网络节点的任何值。
我有一个 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 网络节点的任何值。