首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自适应检索CAN通道的sysVar BusLoad

自适应检索CAN通道的sysVar BusLoad
EN

Stack Overflow用户
提问于 2019-10-11 18:13:42
回答 2查看 410关注 0票数 0

我正在为一个测试创建一个程序节点。测试需要了解正在测试的CAN通道的总线负载。除了检索相应通道的sysVar总线负载之外,测试几乎是完全自主的。我想要这样做,以便可以像这样检索BusLoad值:

正确的方式:

代码语言:javascript
复制
on message *{
      BusLoad = @_Statistics::CAN1::Busload;
}

我想要的:

代码语言:javascript
复制
on message *{
      BusLoad = @_Statistics::this.msgChannel::Busload;
}

我对CAPL非常陌生,所以任何帮助都将不胜感激,我甚至不确定这是否可能。

谢谢!:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-17 22:16:41

可以按名称访问系统变量。

尝试这个(无法测试它,我当前离开了我的CANoe):

代码语言:javascript
复制
on message * {
  char buffer[100], format[] = "CAN%d::Busload";

  snprintf(buffer, elcount(buffer), format, this.CAN);
  BusLoad = sysGetVariableInt("_Statistics", buffer);
}

sysGetVariableInt允许将系统变量的名称指定为字符串。在snprintf中,您可以使用通道编号来组合字符串。

票数 0
EN

Stack Overflow用户

发布于 2019-10-16 01:38:10

你可以这样想:

代码语言:javascript
复制
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;
      }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58339061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档