我使用 CANoe,我想添加接受信号并更改环境变量的节点
当然使用 CAPL 编码 例如:
on signal Signal_Name
{
set env variable = SET;
}
您可以使用,
@Env_Variable_Name = 1;
例如,我有一个名为Env_DrvDrSw
的环境变量
on key 'a'
{
@Env_DrvDrSw = 1;
}
但是 CAPL有一个很小的限制,因为 CAPL 是基于事件的编程,CAPL 代码中的on envVar Env_DrvDrSw
部分将在on key 'a'
事件执行后执行。 你不能指望它像C语言一样工作。
希望我澄清了你的问题。如果我错了,请纠正我。
CAPL中没有您最终将使用这样的东西:on signal *
程序,因为信号总是作为消息的数据包传输。因此,
on signal ( LightSwitch::OnOff | MotorSwitch::OnOff )
{
putValue (yourEnvironmentVariable, this); // Maybe phys, if applies
}
请注意,on envVar yourEnvironmentVariable/*
在此调用后会立即触发。最后,on envVar *
事件总是在访问环境变量时触发,这意味着它不关心分配给变量的实际值是否已更改。
根据参考文献,并感谢@M.Spiller,一旦其中一个信号发生变化,就会调用该程序。