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),此变量不会被CAPL或pannel改变 | ||
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 命名空间::系统变量名
{
}
同一时刻收到多个值,我们可以选择触发多次,或只触发最近的一次赋值