当前位置: 首页 > news >正文

CAPL编程语言快速入门 上

提到CAPL,相信各位一定不陌生,它是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程语言。CAPL中程序块的执行由事件控制,在专用的编译器中开发和编译,这样可以访问数据库中的所有对象以及系统变量,作为汽车电子工程师,在工作中会经常用到。

CAPL可以在CANoe界面Tools>>CAPL Browser中打开。

在这里插入图片描述

图1 CAPL打开方式

CAPL界面由功能区、程序框架浏览树、输出窗口、编辑区、访问区五部分组成。

在这里插入图片描述

图2 CAPL界面

顾名思义,程序编辑区就是编写CAPL脚本的区域;程序架构浏览树起目录的作用,可以把编辑区定位到编写的事件或函数类型的语句;输出窗口可以输出编译过程中的事件和使用搜索时定位到的结果;访问区能够访问到CANoe工程加载的数据库中的信号、创建的系统变量以及CAPL函数库中的语句,直接从右侧访问区拖拽到中间编辑区使用(注意:工程创建路径中不能有中文,否则访问不到数据库文件)。

功能区由五部分构成,首先是File菜单栏,与大多数软件相同,它是文件创建、保存、加载、设置等功能区域。

在这里插入图片描述

图3 File菜单栏

Home功能区提供了CAPL编译常用功能,包括代码编译、查找、替换、屏蔽、取消屏蔽等功能。

在这里插入图片描述

图4 Home功能区

Filter功能区的作用是管理CAPL的函数库,可以在函数访问区中屏蔽掉不需要的函数。

在这里插入图片描述

图5 Filter功能区

Debug功能区是调试的区域,提供了一些基本的调试操作,一般情况下不通过debug模式来调试脚本。基本上编译一次,存在错误可以通过Output输出窗口获得错误类型并进行更改。如果脚本编译成功之后,仍然不能满足测试步骤的输出,一般会使用Write窗口进行调试。

在这里插入图片描述

图6 Debug功能区

Layout功能区主要是针对CAPL用户的页面展示。例如进行水平分区、垂直分区等操作方便用户进行脚本编写。

在这里插入图片描述

图7 Layout功能区

CAPL应用场景:

  1. 节点仿真
    关联Simulation Setup中的ECU节点,实现ECU节点仿真和整车网络仿真。
    在这里插入图片描述
图8 Simulation Setup窗口
  1. 测试功能
    关联Simulation Setup中的Test Module模块或是Test菜单中的Test Setup,结合TSL(Test Service Library,测试服务库)进行测试功能开发。
    在这里插入图片描述
图9 Test Setup窗口
  1. 分析功能
    关联Measurement Setup窗口功能模块中的Program Node,实现总线过滤、分析功能。
    在这里插入图片描述
图10 Measurement Setup窗口

CAPL脚本结构:

一个完整的CAPL脚本由三部分组成:变量、各种事件和自定义函数。
在这里插入图片描述

图11 CAPL的三部分

CAPL的事件类型包含三种:总线事件、属性事件、时间事件。CAPL常用的事件类型如下图所示。

在这里插入图片描述

图12 Measurement Setup窗口

文章精彩后续详见: CAPL编程语言快速入门 下

喜欢本篇文章的话记得💬评论💖点赞⭐收藏
➕更多技术文章直播课程,敬请持续关注北汇信息➕
⬇️业务咨询请私信北汇信息或在官网留言⬇️
📩📩📩

相关文章:

  • FFMPEG音视频开发指南(一)
  • C++ 11智能指针详解和使用
  • 多测师肖sir_高级讲师_第2个月第7讲解模块
  • VS Code摸鱼神器,让你快速开发AI模型
  • Android修行手册 - 门脸控件-Toolbar
  • 我的天津科大生活
  • 【图说区块链】将BSV区块链作为企业网络安全框架
  • 【web前端开发】学生信息管理系统
  • 三问 Python:能干什么?为什么火?会继续火吗?
  • HTML篇四
  • 比 MyBatis 快 100 倍,天生支持联表
  • 继承 - c++
  • Redis无法使用IP链接,只能通过localhost/127.0.0.1链接
  • 实时频谱 TFN 手持式频谱分析仪 RMT716A 9KHz-6.3GHz 高性能全功能
  • 计网 | 网络的两种服务 —— 虚电路和数据报服务
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【css3】浏览器内核及其兼容性
  • 2019.2.20 c++ 知识梳理
  • Android框架之Volley
  • Apache Zeppelin在Apache Trafodion上的可视化
  • const let
  • CSS 三角实现
  • idea + plantuml 画流程图
  • Invalidate和postInvalidate的区别
  • Javascript编码规范
  • Java多态
  • Java新版本的开发已正式进入轨道,版本号18.3
  • k8s如何管理Pod
  • linux安装openssl、swoole等扩展的具体步骤
  • PermissionScope Swift4 兼容问题
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Transformer-XL: Unleashing the Potential of Attention Models
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue.js-Day01
  • Xmanager 远程桌面 CentOS 7
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 什么是Javascript函数节流?
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信开源mars源码分析1—上层samples分析
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 怎样选择前端框架
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​2021半年盘点,不想你错过的重磅新书
  • ​io --- 处理流的核心工具​
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Maven错误Error executing Maven
  • (libusb) usb口自动刷新
  • (二)hibernate配置管理
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十六)Flask之蓝图
  • (学习日记)2024.01.19
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>