我正在创建一个程序节点进行测试。该测试需要了解正在测试的 CAN 通道的总线负载。除了检索相应通道的 sysVar Busload 之外,该测试几乎是完全自主的。我想使它,以便我可以检索 BusLoad 值是这样的:
正确的方式:
on message *{
BusLoad = @_Statistics::CAN1::Busload;
}
我想要的:
on message *{
BusLoad = @_Statistics::this.msgChannel::Busload;
}
我对 CAPL 非常陌生,所以任何帮助都将不胜感激,我不确定这是否可能。
Thank you!:)
您可以按名称访问系统变量。
试试这个(不能测试这个,我目前远离我的 CANoe):
on message * {
char buffer[100], format[] = "CAN%d::Busload";
snprintf(buffer, elcount(buffer), format, this.CAN);
BusLoad = sysGetVariableInt("_Statistics", buffer);
}
sysGetVariableInt
允许将系统变量的名称指定为字符串。使用snprintf
,您可以使用通道号组装字符串。
你可以想到这样的事情:
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;
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(26条)