CAPL的数据类型
玫瑰柒
|
2020.01.02
|
0
+关注

本部分内容我来学习CAPL的数据类型。由于CAPL是一门类C的语言,因此其基本的数据类型跟C语言类似,但也有一些特殊的地方。

1. 全局变量与局部变量

在CAPL中,全局变量需要被声明在vriables部分,同时可以使用直接赋值方法进行初始化。如果没有初始化,编译器会执行自动初始化,默认值为0。全局变量的作用域包括整个CAPL文件以及与此文件有链接的其他CAPL文件。

与C语言不同,局部变量在CAPL中总是被静态的创建。初始化只在程序体启动时执行,当再次进入程序时,局部变量被假定是上一次跳出程序时的值。局部变量的作用域,仅限于当前函数体范围内,即该函数的大括号范围内。

2. 简单变量

(1)整型

整数就是没有小数部分的数字。如表1所示。

(2)浮点型

CAPL提供两种浮点型变量:float和double,如表2所示。

3. 特殊类型

(1)报文

报文是车载网络的最基本的结构部分,CAPL提供了各种网络对应的报文类。这里介绍CAN和LIN。

使用关键字message来声明一个报文变量,默认为CAN报文变量。当有数据库支撑的时候,一个完整的声明应包括message ID或message name。一标识符“x”结尾的ID表示这是一个扩展帧ID。而“*”则表明这条报文在声明时还不含有CAN ID。例如:

on message CAN1.*

{

message *msg

if (this.dir!=rx) return

msg=this

}

切记,使用这种方式声明报文时,一定要指定ID后才能发送出去。

(2)诊断报文

CAPL 通过诊断请求(DiagRequest)和诊断响应(DiagResponse)来实现跟ECU之间的诊断服务交互。

通常情况下,诊断服务需要首先对Diagnostic对象声明和初始化。

DiagRequest ServiceQualifier request;

DiagResponse ServiceQualifier response;

上述声明语句分别声明了诊断请求对象“request”和诊断响应对象“response”;并通过给出诊断服务“ServiceQualifier”进行初始化。这种初始化将在节点仿真开始时被执行一次,并在每次诊断目标(DiagTarget)改变时被执行一次。

(3)系统变量

系统变量是一种特殊的变量,用来描述特殊状态(例如某种事件的触发)或者记录测量数据。一般有系统定义和用户自定义两种,作用域都是在各自命令的空间内。

系统变量的类型及描述如表3所示。

(4)定时器

CAPL提供了两种定时器变量:timer基于秒的时间单位;mstimer基于毫秒的时间单位,例如:

Timer mytimer1;

本部分内容主要介绍了CAPL的数据类型,你是不是掌握了?

精选留言
延伸阅读
2020.11.20
2916阅读
2020.07.12
1846阅读
更多报告干货
写留言
3212
阅读
收藏
回到顶部