【车载开发系列】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 测量结束了
相关推荐
测试杂货铺9 分钟前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
小码哥说测试2 小时前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
awonw17 小时前
[java][框架]springMVC(1/2)
测试工具·postman
迃幵chen1 天前
wireshark-网络分析工具
网络·测试工具·wireshark
孤蓬&听雨1 天前
RabbitMQ自动发送消息工具(自动化测试RabbitMQ)
分布式·测试工具·自动化·rabbitmq·自动发送消息
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
qq_433716951 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman
qq_433716951 天前
Postman断言与依赖接口测试详解!
自动化测试·软件测试·功能测试·测试工具·mysql·接口测试·postman
如光照1 天前
Linux与Windows中的流量抓取工具:wireshark与tcpdump
linux·windows·测试工具·网络安全
土小帽软件测试1 天前
jmeter基础03_汉化jmeter界面
测试工具·jmeter·软件测试学习