Loading...
墨滴

jasonj333

2021/06/18  阅读:36  主题:红绯

capl-关键字

在capl中,关键字具有特殊的含义和用途,因此,不得将关键字用作变量或函数的名称

声明数据类型的关键字

可以用不同的关键字,声明或引用不同类型的数据

byte

声明一个字节的变量

word

声明两个字节的变量

dword

声明四个字节的变量

int

声明两个字节的整数

long

声明四个字节的变量

qword

声明八个字节的变量

char

声明一个字符串

float

声明一个浮点数,8个字节

double

声明一个浮点数,8个字节

定义一个结构体或枚举类型

struct

struct Data {
int type;
long l;
char name[50];
};  

enum

enum State { State_Off = -1, State_On = 1 };  

声明消息/信号

message

capl程序要在总线上传输的CAN报文是用关键字message声明的

两种声明方式:

  1. 用dbc里的消息名声明消息
message Ignition_on msg_wakeup;  
  1. 用消息id声明消息
message 0x5f0 msg_wakeup;  

linFrame

capl程序要在lin线上传输的lin帧是用关键字linFrame声明的

dbMsg *

声明一个dbc类型的消息

这里有三种使用方式:

  1. 如果你想传入一个dbc里的message名作为形参,可以使用这种方式,调用时直接把dbc里的消息传进去即可
void function1(dbMsg * dbcmsg)  
  1. 也可以先声明一个dbc消息,然后用=把dbc里的消息EngineData赋值给它
dbMsg * dbcmsg;
dbcmsg = EngineData;  
  1. 还可以用函数lookupMessage函数赋值dbc消息,传入的字符串是dbc里消息名
dbMsg * dbcmsg;
dbcmsg = lookupMessage("EngineData")  

还有dbNode等关键字,用来声明dbc里的其他参数

signal *

声明一个dbc类型的信号

这里也提供了一个lookupSignal的方法

signal * dbcsignal;
dbcsignal = lookupSignal("EngineSignal");  

serviceSignal *

用来声明数据库里SOME/IP服务信号,也有一个lookup的方法

类似的还有很多,比如:serviceSignalData */serviceSignalNumber * /serviceSignalString *

声明诊断服务

diagRequest

声明诊断请求,具体用法见公众号其他文章

用cdd里的诊断请求声明

diagRequest Door.defaultSessionStart req;  

diagResponse

声明诊断响应,具体用法见公众号其他文章

很好玩的是,请求的响应也是用cdd里的诊断请求来声明

diagResponse Door.defaultSessionStart resp;  

声明系统变量或计时器

sysvar *

声明系统变量

类似的还有:sysvarInt */sysvarFloat */sysvarString *等

timer

声明一个定时器,时间单位为秒

timer t_sendmsg;  

类似的还有:msTimer,声明毫秒级定时器

定义一个test case/test function

testcase

定义一个test case

testcase mytestcase()
{
}  

testfunction

定义一个test function,它能被用在test case或test sequence中

其他

this

在接收CAN对象或系统变量或环境变量的回调事件中,可以用this来指定这个接收的对象

on message 100
{
byte byte_0;
byte_0 = this.byte(0);
}  

$

如果想直接给信号赋值,必须要在信号的前面加一个$符号

$EngineSpeed = 500.0;   

.raw

读取信号的原始值

EngineMsg.EngineSpeed.raw   

类似的还有.phys,读取信号的物理值

if, else, switch, case, default, for, while, continue, break, return都是关键字

以上,就是capl中关键字的内容,请帮忙点赞或转发哦


jasonj333

2021/06/18  阅读:36  主题:红绯

作者介绍

jasonj333