首页 > 其他分享 >CANoe学习笔记-第十章节-Panel实例

CANoe学习笔记-第十章节-Panel实例

时间:2024-09-29 23:50:27浏览次数:3  
标签:Engine received EngineState CANoe RX 第十章 sysvar DoorState Panel

1.前期准备工作

1.1首先创建三个节点

1.2 添加相关的系统变量如下

1.3 新建如下dbc文件

1.4 按照书中的要求,新建Panel面板

2.三个节点的程序分别为

2.1 Engine 节点程序

//Engine Node CAPL Program
    includes
    {
      
    }

    variables
    {
      
    }
    //处理系统变量-sysvar::Engine::EngineStateSwitch
    on sysvar sysvar::Engine::EngineStateSwitch
    {
     $EngineState::OnOff = @this;
      if(@this)
        $EngineState::EngineSpeed = @sysvar::Engine::EngineSpeedEntry;
      else
        $EngineState::EngineSpeed = 0;
    }

    //process the change event of sysvar::Engine::EngineSpeedEntry
    on sysvar sysvar::Engine::EngineSpeedEntry
    {
      if(@sysvar::Engine::EngineStateSwitch) 
      {
        $EngineState::EngineSpeed = @this;
      }
    }

2.2 Door 节点程序

//Door Node CAPL Program
    includes
    {
      
    }

    variables
    {
      int gDebugCounterTX = 0;
      int gDebugCounterTXRQ = 0;
      int gDebugCounterRX = 0;
      
    }

    on start
    {
       setWriteDbgLevel(0); // set DbgLevel = 1 to get more information in Write-Window
    }
    
    //check DoorState transmission direction
    on message DoorState 
    {
      //Check DoorState Message transmission direction - TX
      if (this.dir == TX)
      {
        gDebugCounterTX++;
        if(gDebugCounterTX == 10)
        {
          writeDbgLevel(1,"DoorState TX received by node %NODE_NAME%");
          gDebugCounterTX = 0;
        }     
      }
      //Check DoorState Message transmission direction - TXREQUEST
      if(this.dir == TXREQUEST)
      {
        gDebugCounterTXRQ++;
        if(gDebugCounterTXRQ == 10)
        {
          writeDbgLevel(1,"DoorState TXREQUEST received by node %NODE_NAME%");
          gDebugCounterTXRQ = 0;
        } 
      }
      //Check DoorState Message transmission direction - RX
      if (this.dir == RX)
      {
        gDebugCounterRX++;
        if(gDebugCounterRX == 10)
        {
          writeDbgLevel(1,"Error: DoorState RX received by node %NODE_NAME%");
          gDebugCounterRX = 0;
        }
      }
    }    
    
    //to disable the debug info output
    on key '0'
    {
      setwriteDbgLevel(0);
    }
    
    //to enable the debug info output
    on key '1'
    {
      setwriteDbgLevel(1);
    }

2.3 Display 节点程序

//Display Node CAPL Program
    includes
    {
      
    }

    variables
    {
      
    }

    //process the EngineState Message received
    on message EngineState 
    {  
      // engine state received
      if (this.dir == RX)
      {
        @sysvar::Engine::EngineSpeedDspMeter = this.EngineSpeed / 1000.0;
      }
    }
    
    //process the DoorState Message received
     on message DoorState 
    {  
      // door state received
      if (this.dir == RX)
      {
          @EnvDoorState = this.Door_L + this.Door_R * 2;
      }
    }

动画效果的示例图片(PS:图片来源:《CANoe从入门到开发》资源)

标签:Engine,received,EngineState,CANoe,RX,第十章,sysvar,DoorState,Panel
From: https://blog.csdn.net/m0_54956822/article/details/142645076

相关文章

  • Matlab_与CANoe联合仿真方案基础环境搭建
    1、软件准备CANoe版本VectorCANoe11.0MATLAB 版本 MATLABR2021b2、CANoe中Matlab的驱动位置我的电脑安装位置:D:\ProgramFiles\VectorCANoe11.0\InstallerAdditionalComponents\Matlab\Vector_AddOn_Matlab_Interface_V604.exe有的人电脑安装位置:C:\ProgramFi......
  • Linux服务器运维管理面板1Panel快速安装及安全配置
    1Panel是一个现代化、开源的Linux服务器运维管理面板,旨在帮助运维人员简化服务器管理任务。它提供了直观的界面和强大的功能,使用户可以通过图形化操作界面对服务器进行管理,减少了对命令行的依赖。1Panel支持多种操作系统,适用于Linux服务器,提供了如网站管理、数据库管理、安......
  • Linux服务器运维管理面板1Panel快速安装及安全配置
    1Panel是一个现代化、开源的Linux服务器运维管理面板,旨在帮助运维人员简化服务器管理任务。它提供了直观的界面和强大的功能,使用户可以通过图形化操作界面对服务器进行管理,减少了对命令行的依赖。1Panel支持多种操作系统,适用于Linux服务器,提供了如网站管理、数据库管......
  • cPanel&WHM 的将插件转换为帐户工具
    cPanel主机帐户是可以管理多个域名。但在某些情况下,可能希望将附加域分离到单独的cPanel帐户中。在这篇文章中,我们将详细说明如何完成这一操作!具有最高权限的用户可以将附加域移至其自己的独立cPanel帐户。WHM界面首先,登录到您的WHM控制面板。在左侧菜单中选择“ConvertAddonDoma......
  • WPF Panel超出边界
    关于StackPanel和Grid这两种常用的WPF布局控件的不同行为1.StackPanel的行为:StackPanel设计用于简单地将元素堆叠在一起(垂直或水平)。它不会限制其子元素的大小,允许它们按需增长。这意味着:子元素可以超出StackPanel的边界StackPanel不会自动调整大小以适应其内容如果内......
  • Linux 基础入门操作 第十章 多线程实现
    10线程介绍线程是进程的一条执行路径。每个线程共享其所附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间......
  • 828华为云征文|部署 Linux 服务器运维管理面板 1Panel
    828华为云征文|部署Linux服务器运维管理面板1Panel一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1重置密码2.2服务器连接2.3安全组配置2.4Docker环境搭建三、Flexus云服务器X实例部署1Panel3.11Panel介绍3.21Panel部署3.31Panel使用四、总......
  • 第十章 【后端】商品分类管理微服务(10.6)——创建商品分类数据库
    10.6创建商品分类数据库10.6.1使用PowerDesigner设计数据库设计模型注意:逻辑字段(如状态位、删除位)要设置成tinyint类型1位,MybatisPlus代码生成器才能生成Boolean类型(参考:https://baomidou.com/pages/779a6e/);为了提高插入效率,除了要设置自动增长的主......
  • c# 透明Panel
    透明的panel,可用用作遮罩层。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.ComponentModel.DataAnnotations;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceWinFormsApp1{publiccla......
  • 1Panel:一个现代化、开源的 Linux 服务器运维管理面板
    前言之前有小伙伴问:Linux服务器运维管理除了宝塔,还有其他值得推荐的管理软件吗?,今天大姚给大家分享一个现代化、开源的Linux服务器运维管理面板:1Panel。项目介绍1Panel是新一代的Linux服务器运维管理面板,旨在通过现代化的Web界面帮助用户轻松管理Linux服务器。该项目是开......