从 CAPL 中的字符串动态分配信号名称

Assign Signal names dynamically from a String in CAPL

我有一个字符串,用于存储从 excel 文件中提取的信号名称。 如果我有很多这样的信号,我想使用字符串动态分配信号的名称。

例如,如果我的 dbc 文件中有一个名为 'speed' 的信号,并且我有一个存储 'speed' 的字符串,我需要将信号的值设置为 'speed'作为 100.

variable
{
    message BCM BCM;
    char signal[100]= "speed";
}

on message * 
{
    $signal= 100;
}

我得到的错误是:
错误:标识符 'signal' 没有信号类型。

是否有解决此问题的方法,以便我可以通过某种方式将字符串转换为信号名称?

您正在像这样混合变量格式。您可以在其上使用 $ 的唯一对象是 dbSignal 类型。你需要的是像 getSignal(dbSignal name); 这样的函数,但是带有 char[]范围。 遗憾的是,Vector 没有实现这样的解决方法,让您只能选择通过测试用例参数传递信号字符串(如果您使用 XML 测试节点)。

既然我认为你有太多,我建议你用另一种脚本语言编写一个脚本来构造 .can 文件本身的文本,用 excel 中的字符串填充 dbsignals 的位置,然后将 .can 文件用于 testing/simulation.