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

Com 如何在CAPL中动态(通过字符串)访问CAN信号?,com,can-bus,capl,canoe,canalyzer,Com,Can Bus,Capl,Canoe,Canalyzer,我试图使用CANalyzer的COM接口将CAN信号强制为给定值。由于没有用于发送CAN消息的COM方法,因此我正在使用CAPL实现一种变通方法: void SendMySignal(int value) { message MyMessage msg; msg.MySignal = value; output(msg); } 这很好,但是因为这里静态引用了MyMessage和MySignal,所以我必须实现N个函数才能发送N个信号(或N路开关语句等)。有没有一种方法可以避免麻烦并

我试图使用CANalyzer的COM接口将CAN信号强制为给定值。由于没有用于发送CAN消息的COM方法,因此我正在使用CAPL实现一种变通方法:

void SendMySignal(int value) {
  message MyMessage msg;
  msg.MySignal = value;
  output(msg);
}
这很好,但是因为这里静态引用了
MyMessage
MySignal
,所以我必须实现N个函数才能发送N个信号(或N路开关语句等)。有没有一种方法可以避免麻烦并通过字符串访问消息中的信号?大概是这样的:

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

我也愿意接受其他解决方案,以防在COM接口中遗漏某些内容。如果有一个只适用于CANoe的解决方案,我可以向我的老板申请许可证,但我当然宁愿不申请。

有这样的功能,但它仅限于在测试节点中使用

long setSignal(char signalName[], double aValue);
有关详细信息,请参见:

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

注意不要为每个信号发送新的信息,以避免总线过度泛滥。在我看来,为整个消息设置所有信号,并仅在不循环的情况下更改发送它是一种更好的方式。循环消息中的信号更新大部分必须在下一个循环中发送