CAPL中的基本数据类型

说明:CAPL支持的正常类型都可以作为函数参数(这里的正常

类型,是指Byte
的整数倍的数据类型)

数据类型 数据有无符号 长度(Byte) 范围(十进制)
Byte unsigned 1 0-255
word unsigned 2 0-65535
dword unsigned 4 0-4294 9672 95
qword unsigned 8 0-1844 6744 0737 0955 1615
char  signed 1 (-125-125)
int signed 2 (-32768-32767)
int64 signed 8 (-9223 372 036 854 775 808
-9223 372 036 854 775 807)
float signed 8 无限接近于0-1.7*10^308
double signed 8 无限接近于0-1.7*10^308

我刚刚开始接触CAPL时,对于CAPL不支持unsigned非常耿耿于怀,接触一段时间后发现,CAPL

取消unsigned关键字,是有一定他的道理的。

表中标红的是CAPL中新添加的数据类型,本质上是一些c中的类型变量的平替。

CAPL平替
无符号平替(CAPL) 等价于C中的 说明
char  byte unsigned char 
int word unsigned int 

CAPL编译器,将int为2个Byte

但是非常特殊的是,在Sysvar(系统变量中)

int又变为32bit,即4Byte


long int
int64(等价于 unsigned long int 

CAPL中的系统变量(sysvar)类型详解

CAPL中的系统变量
数据类型 数据有无符号 长度(Byte) 写法
int 有符号 32 Integer(32bitSigned)
无符号 32 Integer(32bit unsigned)
有符号 64 Integer(64bitSigned)
无符号 64
Double - 64 Double(64bit)
String 字符串 - -
Data 字节数据 - Data
IntegerArray - - -
Double Array - - -

重点关注Data和String数据:

1:Data数据

编辑界面如下:

第一个框选择数据类型,第二个框可以选择InitValue:初始数据类型。数据类型默认十六进制,

0x YY,YY表示只能是2位。且看图知道,数据默认是16进制,且不能加上前缀0x,且不能是添加字符如:‘a’

且需要了解的是,Data好像类似于整形数组,但是CAPL中支持的整形数组,必须是固定长度的。DATA更类似于可变长度的数组。

注意C语言中规定 数组定义时不是必须要写数组长度,如:int Arr_1[]={10,20,30,40};注意这不是可变长度数组,此种情况下,必须定义时,赋初值。赋完初值后,编译器根据初始化时,赋值给数组的元素个数,定义了数组的长度,后续对数组的,改写,删除,添加,等操作均不能改变数组的大小。而可变长度数组,是可以任意时刻改变数组长度。

2:string数组

可以看到,系统变量中的String类型是可以包含各种符号,数字和字母(包含大写和小写)都是合法的操作。

接下来介绍关于Access and Event的相关属性

系统变量的属性设置
属性名称 属性说明
OnlyUsedinAnalysis 指示变量是否仅在测量设置中可用。
ReadOnly 只读(不可被改写,相当于C中的const),此变量不会被CAPLpannel改变
Multi-CANoe Write Access 在这里,您可以为Multi-CANoe操作选择可以写入变量的CANoe设备。其他CANoe设备会自动接收此变量的值更改。
如果该字段为空,则它是一个局部系统变量。值更改不会提供给其他CANoe设备。
EventOnValueAssignment 系统变量被赋值时的事件

介绍其中几个比较难懂的点

1:OnlyUsed in Analysis  只在Analysis中使用,也就是说,在MeasurementSetup中可以添加program node(也就是编程功能节点),只在这里使用。但是不推荐勾选这个选项,这样无论是Analysis和CAPL编程中都可以使用。

2:Multi-CANoe Write Access,这个选项其实就是将系统变量,与CANoe硬件(如VN1640,VN 5620强制绑定)写权限,只有此CANoe才有写权限,一般情况下,推荐也不勾选。(此处,我认为是为了工程对外保密使用的,但是CANoe本身就提供了encrypted加密功能)

3:EventOnValueAssignment,是指系统变量,同一时刻收到多个值,所触发的事件。如我们代码中设置了此系统变量的一个

on sysvar 命名空间::系统变量名

{

}

同一时刻收到多个值,我们可以选择触发多次,或只触发最近的一次赋值

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐