我正在为一个测试创建一个程序节点。测试需要了解正在测试的CAN通道的总线负载。除了检索相应通道的sysVar总线负载之外,测试几乎是完全自主的。我想要这样做,以便可以像这样检索BusLoad值:
正确的方式:
on message *{
BusLoad = @_Statistics::CAN1::Busload;
}我想要的:
on message *{
BusLoad = @_Statistics::this.msgChannel::Busload;
}我对CAPL非常陌生,所以任何帮助都将不胜感激,我甚至不确定这是否可能。
谢谢!:)
发布于 2019-10-17 22:16:41
可以按名称访问系统变量。
尝试这个(无法测试它,我当前离开了我的CANoe):
on message * {
char buffer[100], format[] = "CAN%d::Busload";
snprintf(buffer, elcount(buffer), format, this.CAN);
BusLoad = sysGetVariableInt("_Statistics", buffer);
}sysGetVariableInt允许将系统变量的名称指定为字符串。在snprintf中,您可以使用通道编号来组合字符串。
发布于 2019-10-16 01:38:10
你可以这样想:
on message *{
switch (this.can)
{
case 1:
BusLoad = @_Statistics::CAN1::Busload;
break;
case 2:
BusLoad = @_Statistics::CAN2::Busload;
break;
case 3:
BusLoad = @_Statistics::CAN3::Busload;
break;
// and so on
default:
// what happens on default
break;
}
}https://stackoverflow.com/questions/58339061
复制相似问题