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