首页 文章

如何在CAPL中动态(通过字符串)访问CAN信号?

提问于
浏览
1

我正在尝试使用CANalyzer的COM接口强制CAN信号到给定值 . 由于没有COM方法发送CAN消息,我正在使用CAPL实现一种解决方法:

void SendMySignal(int value) {
  message MyMessage msg;
  msg.MySignal = value;
  output(msg);
}

这工作正常,但是由于 MyMessageMySignal 在这里被静态引用(按名称),我将必须实现N个函数以便能够发送N个信号(或N路开关语句等) . 有没有办法通过字符串避免消息中的麻烦和访问信号?像这样的东西:

void SendSignal(int MessageID, char SignalName, int value)

如果我错过了COM界面中的某些内容,我也会接受替代解决方案 . 如果有一个只适用于CANoe的解决方案,我可以向我的老板索取许可证,但我当然不愿意这样做 .

1 回答

  • 1

    有这样的功能,但它被限制使用 only in test nodes

    long setSignal(char signalName[], double aValue);
    

    你可以在以下网址找到

    CAPL功能概述»测试功能设置/信号访问»SetSignal特殊用例:测量开始前信号未知

    并注意不要为每个信号发送新消息以避免总线过度泛滥 . 在我看来,为整个消息设置所有信号并将其发送到更改 only when it is not cyclic 是一种更好的方式 . 循环消息中的信号更新 mostly 必须在下一个周期发送 .

相关问题