如何从传入信号中设置CAPL代码中的env变量?



我使用 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,一旦其中一个信号发生变化,就会调用该程序。

相关内容

最新更新