1

我使用 CANoe,我想添加接受信号并更改环境变量的节点

当然使用 CAPL 编码,例如:

on signal Signal_Name
{
   set env variable = SET;
}
4

2 回答 2

3

您可以使用,

@Env_Variable_Name = 1;

例如,我有一个名为Env_DrvDrSw

on key 'a'
{
    @Env_DrvDrSw = 1; 
}

但是 CAPL 有一个小的限制,因为 CAPL 是基于事件的编程,on envVar Env_DrvDrSw你的 CAPL 代码中的部分将在事件执行后执行on key 'a'。你不能指望它像 C 语言一样工作。

希望我澄清了你的问题。如我错了请纠正我。

于 2017-08-01T14:59:12.237 回答
0

CAPL中没有on signal *过程,因为信号总是作为消息包传输。所以,你最终会使用这样的东西:

on signal ( LightSwitch::OnOff | MotorSwitch::OnOff )
{
  putValue (yourEnvironmentVariable, this);      // Maybe phys, if applies
}

请注意,on envVar yourEnvironmentVariable/*在此调用之后立即触发 a。最后,on envVar *在访问环境变量时总是会触发该事件,这意味着它不关心分配给变量的实际值是否已更改。

根据参考资料,感谢@M.Spiller,只要其中一个信号发生变化,就会调用该过程。

于 2019-03-13T08:00:30.490 回答