【车载开发系列】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 测量结束了
相关推荐
测试19986 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
影sir8 小时前
Selenium常用函数(等待)
selenium·测试工具
影sir8 小时前
Selenium常用函数(浏览器导航,文件上传,浏览器参数设置)
selenium·测试工具
数字时代全景窗19 小时前
从OpenClaw、Palantir、SpaceX,看颠覆式创新的四个层次(5)传统财务模型的局限
大数据·人工智能·架构·软件工程
asdfg12589631 天前
一文理解“架构思维”
java·软件工程·软件开发·架构思维
德思特1 天前
通过 Wireshark 抓取串口命令
网络协议·测试工具·wireshark
影sir2 天前
Selenium常用函数(窗口与弹窗)
selenium·测试工具
上海知从科技2 天前
SENT传输协议:汽车传感器数字化通信的最优解决方案
科技·安全·汽车·软件工程·汽车电子
Luminbox紫创测控2 天前
基于环境舱的新能源汽车三高试验方法与热响应评估
大数据·人工智能·测试工具·汽车·安全性测试·测试标准