【车载开发系列】CAPL语言入门基础

【车载开发系列】CAPL语言入门基础

CAPL语言入门基础

一. CAPL语言简介

CAPL的全称是Communication Access Programming Language,中文叫做通信访问编程语言。

它是一种类C语言的,应用于Vector CAN工具节点的编程,是基于事件建模的语言。

也是CAPL作为CAN总线测试的主要测试脚本语言。

二. CAPL语言的特性

  1. CAPL是以事件驱动的程序执行形式运行的,它是CANoe/CANalyzer专用的编程语言。
  2. 可以使用write()函数进行调试,用于将调试信息输出到CANoe的write窗口上;
  3. 通过output()函数进行指定报文的发送;
  4. 通常是通过环境变量事件与CANoe面板进行关联,实现交互;
  5. 提供调用dll文件的方法;这样保证了对由其他语言封装好的程序模块的调用;

三. 与C语言的区别

  1. 未定义返回类型,默认为void类型
  2. 像C++一样允许空的参数列表
  3. 像C++一样允许函数重载
  4. 参数检测与C++中一样
  5. CAPL提供一些自带的库函数
  6. CAPL编译时不对自带的关键字和自带的函数名做区分

四. CAPL关键字分类

  1. 数据类型关键字:int, byte, long etc.
  2. 控制语句关键字:if, else
  3. 存储类型关键字:static, extern
  4. 其他关键字:const, message

五. 变量种类

变量种类 定义的地方 可以使用的地方
全局变量 Variables{}内 整个CAPL程序
局部变量 每个事件处理器内 只在定义的事件处理程序内

1)全局变量

  1. 在variables部分声明全局变量
  2. 可通过直接赋值进行初始化,如果没有初始化,编译器自动初始化为0
  3. 全局变量的作用域是整个CAPL文件以及与此文件有链接的其他CAPL文件
c 复制代码
Variables
{
}
  • 在CAPL中可以通过将变量定义在Variables里面来实现全局变量的功能。

2)局部变量

  1. 局部变量的作用域仅限于当前函数体范围内,对应的是栈变量。
  2. 局部变量被静态地创建,初始化只在程序体启动时执行,再次进入程序,局部变量被假定是上一次跳出程序时的值。

3)变量声明定义规则

  1. 只能使用字母字符、数字和下划线
  2. 名称的第一个字符不能是数字
  3. 区分大小写字符
  4. 不能将CAPL关键字用作名称
  5. 不能将CAPL的函数名和对象名用作变量名
  6. 变量名的字符长度最好不要超过32个(编译系统只能识别前32个字符)
  7. 变量名最好具有易读性,"见名知意"

六. 变量类型

1)简单变量

  1. 整型:byte(0-255),word, dword, gword, int, long, int64
  2. 字符:char, 可以和byte类型直接转换
  3. 浮点型

2)struct变量

  1. 结构名在程序中必须唯一
  2. 简单类型、枚举类型或者其他的结构都可以作为结构的成员

3)enum变量

  1. 枚举的成员名必须唯一(否则将有可能代替隐藏数据库中同名的报文和信号)
  2. 如果没有在声明枚举的同时对成员进行赋值,编译器将按照成员声明的顺序对成员进行初始化(第一个为0,往后依次加1)

4)message变量

  1. 使用关键字message来声明一个报文变量,默认是CAN报文也就是CAN消息类型。
  2. 声明报文变量,有数据库支撑时,完整的声明应包含message ID or message name
  3. MessageID以x结尾的ID表示扩展帧
  4. *表示这条报文在声明时还不含有CAN ID

5)Timer变量

  1. CAPL提供了两种定时器变量:timer和msTimer
  2. timer基于秒;msTimer基于毫秒

七. 函数

函数(function)是指接收数据并按照规定执行处理的各种指令。

该程序通过组合函数来描述。CAPL有一个专门的函数。

函数 特征
write 文本输出到输出Window(等同于C语言函数printf())
setTimer 设置计时器
cancelTimer 取消计时器
output 输出消息变量
stop 测量结束了
相关推荐
搏博4 小时前
软件工程之软件项目管理深度解析
软件工程·软件构建·需求分析·软件需求
爱吃java的羊儿8 小时前
信息系统项目管理师-软考高级(软考高项)2025最新(十八)
信息可视化·软件工程·产品经理·可用性测试
第三方软件测评9 小时前
第三方软件测评中心分享:软件功能测试类型和测试工具
功能测试·测试工具
我要学土木12 小时前
软件工程期末知识点整理(更新中)
软件工程
meisongqing13 小时前
【软件工程】软件缺陷 基于组合的优化方法
软件工程·软件缺陷·组合优化
慢一点会很快1 天前
【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解
测试工具·wireshark·tcpdump
搏博1 天前
软件工程之需求分析涉及的图与工具
数据库·软件工程·软件构建·软件需求
workflower1 天前
人协同的自动化需求分析
运维·开发语言·自动化·软件工程·需求分析·软件需求
meisongqing1 天前
【软件工程】基于机器学习的多缺陷定位
软件工程
海尔辛2 天前
学习黑客抓包wireshark
学习·测试工具·wireshark