CANoe中环境变量和系统变量的区别

发表于:2023-12-28 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:51CTO博客

  环境变量和系统变量相同点:
  都可以作为ECU、面板和CAPL程序相连接的媒介。例如,在CAPL程序中,通过改变或监控某一环境变量的值可以触发特定的动作,同样,环境变量的值也可以与面板上控制控件或显示控件相关联。
  历史原因:
  1、CANoe V6.0版本之前,只能采用环境变量传输软件仿真过程中的数据。
  2、在CANoe V6.0版本之后,不仅仿真CAN网络,还支持LIN、FlexRay等其他类型总线的仿真。而环境变量一般通过DBC定义,但DBC一般仅用于CAN网络。在非CAN网络的配置工程中,也需要因此添加额外的DBC专门用于存储环境变量。为了变量的统一管理,引入系统变量,系统变量存储于CANoe配置工程(cfg文件)中,这意味着系统变量独立于任何一种总线及其数据库
  3、环境变量在CANoe V12.0版本之后不适用,不能再新建环境变量。
  环境变量和系统变量不同点:
  1、支持总线类型
  ·系统变量:任意总线类型
  · 环境变量:仅CAN总线
  2、定义位置
  · 系统变量:Environment窗口-SysVar
  · 环境变量:DBC
  3、保存位置
  · 系统变量:CANoe配置工程(cfg文件)、独立的外部XML
  · 环境变量:DBC文件
  4、数据类型
  · 系统变量:有数组,有32位无/有符号整型
  · 环境变量:没有数组,无32位无符号整型
  在脚本中使用:
  1、系统变量
  在系统变量被定义好了之后,相当于定义了一个全局变量。可以通过CAPL内自带的函数来完成使用。
  // 处理系统变量svSwitch的响应
  on sysvar sysvar::MyNamespace::svSwitch
  {
    // 声明一个CAN报文变量,用于报文发送
    message Msg1 msg;
    // 读取当前的系统变量svSwitch的值,并赋值给报文的bsSwtich信号
    msg.bsSwitch = sysGetVariableInt(sysvar::MyNamespace::svSwitch);
    // 将报文输出到总线上
    output(msg);
    write("当前系统变量svSwitch=%d", @this);
  }
  2、环境变量
  在环境变量被定义好之后,相当于定义了一个局部变量。可以通过CAPL内自带的函数来完成使用。
  // 处理环境变量evSwitch的响应
  on envvar evSwitch 
  {
          // 声明一个CAN报文变量,用于报文发送
          message Controller msg;
          // 读取当前的环境变量evSwitch的值,并赋值给报文的Stop信号
          msg.Stop = getvalue(this);
          // 将报文输出到总线上
          output(msg);
  }
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号