首页 > 编程语言 >CAPL编程语言快速入门

CAPL编程语言快速入门

时间:2022-09-19 12:33:05浏览次数:90  
标签:定时器 函数 编程语言 Setup 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窗口


2. 测试功能


关联Simulation Setup中的Test Module模块或是Test菜单中的Test Setup,结合TSL(Test Service Library,测试服务库)进行测试功能开发。


 

图9 Test Setup窗口


3. 分析功能


关联Measurement Setup窗口功能模块中的Program Node,实现总线过滤、分析功能。


 

图10 Measurement Setup窗口

CAPL脚本结构:


一个完整的CAPL脚本由三部分组成:变量、各种事件和自定义函数。


 

图11 CAPL的三部分


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


 

图12 Measurement Setup窗口

 

CAPL常用函数:


下面以CANoe中Easy工程的light.can脚本为例介绍CAPL中的常用函数,该脚本与Panel联用实现转向灯仿真。


 

图13 声明全局变量


上图是CAPL中的全局变量声明,其中 ‘msTimer’为声明以ms为单位的计时器;‘const int’为声明int类型的常值变量,该变量的值无法改变;‘int’为声明int类型的变量,该类型变量有符号,长度为2字节。


 

图14 系统事件


‘on start’是系统事件,测量开始执行会触发该事件,也就是点击Start按钮触发。


 

图15 CAN消息事件


‘on message’是CAN消息事件,接收到指定消息时执行。‘on message LightState’是对名字为LightState的报文反应,除直接使用字符串外,还可以使用报文ID指定触发报文。‘on message 123’是对ID为123(dec)的报文反应;‘on message 0x123’ 是对ID为123(hex)的报文反应;‘on message *’是对所有的报文反应;‘on message 100-200’是对ID为100-200间的报文反应。


 

图16 系统变量事件


‘on sysvar sysvar’是系统变量事件,指定的系统变量值改变时执行。与之相对应另一个系统变量事件是‘on sysvar_update sysvar’,指定的系统变量值更新时执行。


‘setTimer(msTimer t,long duration)’是设置定时器函数,他有两个输入参数,第一个为声明的定时器变量,第二个是设定的时间。‘cancelTimer(msTimer t)’是取消定时器函数,入参为定时器变量,该函数的作用为取消设定的定时器。


图17 时间事件


‘on timer’为时间事件,定时时间超过时执行,它与设置定时器函数联用。定时器通常应用在实现某个任务循环,在时间事件中写入一个设置定时器函数实现循环。


 

图18 键盘事件


‘on key’为键盘事件,被指定的键按下时执行。该事件常用于脚本调试。
此外,‘write()’函数在调试脚本中也常使用,该函数基于C语言中的‘printf()’函数,可以将文本消息输出在write窗口中。

注:图片来自Vector。

 

 

总结:

 


北汇信息作为Vector中国的合作伙伴,始终专注于汽车电子领域的新技术和新产品,为整车厂和零部件企业提供完整的研发、测试解决方案,为工程师在汽车领域提供“趁手装备“!

搜索

复制

<iframe height="240" width="320"></iframe>

标签:定时器,函数,编程语言,Setup,CAPL,事件,功能区,入门
From: https://www.cnblogs.com/polelink/p/16707340.html

相关文章

  • BGI-College生信入门——9、R语言基础(二)
    ggplot2ElegantGraphicsforDataAnalysis,用于数据分析的精美图形ggplot2是一个用于数据统计和绘图的R包与其它绘图包不同,ggplot2有自己的基础语法ggplot2的逻辑......
  • 通用漏洞评分系统 (CVSS)系统入门指南
    通用漏洞评分系统(CVSS)是一个公共框架,用于评估软件中安全漏洞的严重性。这是一个中立的评分系统,让所有企业能够使用相同的评分框架对各种软件产品(从操作系统、数据库再......
  • BGI-College生信入门——8、R语言基础(一)
    什么是R?R是用于统计和作图的免费软件可在各种UNIX平台、Windows和MacOS上编译和运行R的组成一种语言、带有图形的运行环境、调试器、访问某些系统功能以及运......
  • 手写编程语言-实现运算符重载
    前言先带来日常的GScript更新:新增了可变参数的特性,语法如下:intadd(strings,int...num){ println(s); intsum=0; for(inti=0;i<len(num);i++){ intv=n......
  • Unicode 与编程语言
    编程语言中的Unicode因为Unicode可以给世界上大部分字符编码,因此大部分编程语言内部,都是使用Unicode来处理字符的。例如在Java中定义一个字符charc='中',这个字......
  • python爬虫入门笔记(随便记记,持续更新)
    准备:安装库pip3installbeautifulsoup4apt-getinstallpython-lxmlpip3installparse 一、获得从baidu.com中能够跳转到的页面(的链接)importrequests......
  • 简单纪要:docker入门(一),docker安装!
    一docker是什么、为什么出现了docker?Docker是基于GO开发的云开源项目,是一个用于开发,交付和运行应用程序的开放平台。Docker能使应用程序与基础架构分离,从而实现快速交付......
  • 【java8新特性】01:函数式编程及Lambda入门
    我们首先需要先了解什么是函数式编程、函数式编程是一种结构化编程范式、类似于数学函数、它关注的重点在于数据操作、或者说它所提倡的思想是做什么,而不是如何去做。自J......
  • css 基础入门
    目录基础入门CSS语法CSS选择器基础选择器标签选择器类选择器id选择器群选择器全局选择器层级选择器子选择器基础入门前面部分我们知道可以通过直接指定style属性来配置D......
  • Spring入门案例(二)
    1、bean的作用域scope, singleton:单例(默认)先创建/prototype:非单例,用的时候在创建<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.......