【车载开发系列】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 测量结束了
相关推荐
小堃学编程2 小时前
Selenium常用函数介绍
selenium·测试工具
2501_915373882 小时前
Selenium 和playwright 使用场景优缺点对比
selenium·测试工具
笑口常开的小丸子2 小时前
Selenium 中 JavaScript 点击的优势及使用场景
javascript·selenium·测试工具
天才测试猿3 小时前
Postman接口测试之postman设置接口关联,实现参数化
自动化测试·软件测试·python·测试工具·职场和发展·接口测试·postman
张较瘦_12 小时前
[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
软件工程·需求分析
软件测试小仙女16 小时前
鸿蒙APP测试实战:从HDC命令到专项测试
大数据·软件测试·数据库·人工智能·测试工具·华为·harmonyos
张较瘦_18 小时前
[软件工程] 文档 | SpringBoot3的API接口文档开发教程
软件工程
张较瘦_18 小时前
[论文阅读] 人工智能+软件工程 | 用大模型优化软件性能
论文阅读·人工智能·软件工程
张较瘦_21 小时前
[论文阅读] 软件工程 | 量子计算如何赋能软件工程(Quantum-Based Software Engineering)
论文阅读·软件工程·量子计算