大家好,欢迎来到IT知识分享网。
目录
1. CAPL概述
PACL全称为Communication Access Programming Language,即通信访问编程语言。它是Vector 公司专门为CANoe开发环境设计的编程语言,在语法和概念上与C语言类似。借助CAPL,用户可以编写程序并应用到网络的各个节点上,也可以利用CAPL编程加强测量分析功能,以及搭建高效的自动化测试模块。
1.1.CAPL主要用途(10点)
- 使用易于理解的编程语言来仿真节点或模块
- 仿真事件报文、周期报文或者附件条件的重复报文;
- 使用PC键盘模拟操作按钮等人工操作事件
- 仿真节点的定时或网络事件
- 仿真多个事件事件,每个事件都有自己的特定行为
- 仿真普通操作、诊断或生产操作
- 仿真物理参数或报文变化
- 生成错误帧,评估模块和网络软件处理机制
- 仿真模块或网络错误来评估相关的防错机制
- 提供网络测试、诊断等功能测试库函数
2. CAPL数据类型-变量的声明与定义
2.1.变量名命名规则
- 在名称中只能使用字母、字符和下划线;
- 名称的第一个字符不能是数字
- 区分大小写字符
- 不能讲CAPL关键字用作名称,如:int
- 不能将CAPL的函数名和对象用作变量名
2.2.全局变量
2.3.局部变量
与C语言不同,局部变量在CAPL中总是被静态地创建。这意味着初始化只在程序体启动时执行,当再次进入程序时,局部变量被假定是上一次跳出程序时的值。局部变量的作用域,仅限于当前函数体范围内,即该函数的大括号范围内。
3.简单变量
简单的三种变量类型——整型、字符、浮点
3.1.整型
3.2.字符
区别于C语言,CAPL未将char类型(长度1B)归类至整型中,这是因为在CANoe中提供了byte类型。如果数据是具体数值则应使用byte,而对于字符,则应用char (字符串使用char数组)。char 类型和byte类型之间可以直接转换,例如:
byte data1=100; char ch1='d'; ch1=0x62; data1='s';
3.3.浮点型
4.复合类型
CAPL语言属于类C语言,大部分的语法与C保持一致。如数组、结构、枚举等
4.1.结构
stuuct A {
int a; long b; byte c; }
4.2.枚举
variables {
enum {
Apple, Pear, Banana } fruit = Apple; enum Colors {
Red, Green, Blue }; enum Colors color; } enum Colors NextColor(enum Colors c) {
if (c == Blue) return Red; else return (enum Colors) (c + 1); }
4.3.数组
int a[]={
1.2.3}//有效 int b[3]="123",//有效 long c[]={
1,2,3};//无效,CAPL中必须定义数组长度
5.特殊类型
5.1.报文
message EngineData m1;//在数据库中名字为EngineData 命名m1
①直接定义报文
message 0x123 m2;//报文ID为0x123(hex),命名为m2 message 100 m3;//报文ID为100(dec),命名为m3
③扩展帧报文定义-ID结尾加x
message 0x123x,m4;
5.2.诊断报文
诊断报文的发送主要为诊断请求和诊断响应两个对象
请求 DiagRequest 响应 DiagResPonse
一般结合引用CDD使用
variables {
//CDD diagRequest New_ECU_1.ExtendedDiagnosticSession_Start Req_1003; } on key 'a' {
diagSendRequest(Req_1003); }
5.3.系统变量
5.3.1.系统变量创建
下面简单介绍系统变量一些相关参数
系统变量参数 : Namespace:定义系统变量组的名称; Name:系统变量的名称; Data type:数据类型; Location:该系统变量组存放的路径、名称和格式; Values:初始值、最小值、最大值、单位、值表
可进行自定义系统变量的真值表,选择custom来完成真值表的创建
注意:为了方便系统变量复用,可以将相关值输出存储,下次需要使用直接到存储目录下导入
5.3.1.系统变量读取和写入
使用格式
@namespace::系统变量
@:读取和更改系统变量,只用于整型和浮点型变量,对于其他数据类型必须使用其它的函数。通用的访问方式是使用sysGetVariable或者sysSetVariable开头的访问函数
环境变量:和系统变量一样也可以使用 @ 直接访问,通用的方法是使用getValue和putValue函数。
5.4.定时器
msTimer 定时器名字; Timer 定时器名字;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112522.html





