CAPL学习之路-关键字
2021/7/10 23:05:52
本文主要是介绍CAPL学习之路-关键字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在capl中,关键字具有特殊的含义和用途,因此,不得将关键字用作变量或函数的名称
1.声明数据类型的关键字:可以用不同的关键字,声明或引用不同类型的数据
- byte 声明一个字节得变量
- word 声明两个字节得变量
- dword 声明四个字节得变量
- int 声明两个字节的整数
- long 声明4个字节的变量
- qword 声明8个字节的变量
- char 声明一个字符串
- float 声明一个浮点数,8个字节
- double 声明一个浮点数,8个字节
2.定义一个结构体或枚举类型
struct Data { int type; long l; char name[50]; };
enum State { State_Off = -1, State_On = 1 };
3.声明消息/信号
1.capl程序要在总线上传输的CAN报文是用关键字message声明的
两种声明方式:
- 用dbc里的消息名声明消息
-
message Ignition_on msg_wakeup; 用dbc里的消息名声明消息 message 0x5f0 msg_wakeup; 用消息id声明消息
linFrame :capl程序要在lin线上传输的lin帧是用关键字linFrame声明的
dbMsg * 声明一个dbc类型的消息
这里有三种使用方式:
1.如果你想传入一个dbc里的message名作为形参,可以使用这种方式,调用时直接把dbc里的消息传进去即可
void function1(dbMsg * dbcmsg)
2.也可以先声明一个dbc消息,然后用=把dbc里的消息EngineData赋值给它
dbMsg * dbcmsg; dbcmsg = EngineData;
3.还可以用函数lookupMessage函数赋值dbc消息,传入的字符串是dbc里消息名
dbMsg * dbcmsg; dbcmsg = lookupMessage("EngineData")
还有dbNode等关键字,用来声明dbc里的其他参数
signal *
这里也提供了一个lookupSignal的方法
signal * dbcsignal; dbcsignal = lookupSignal("EngineSignal");
serviceSignal *
用来声明数据库里SOME/IP服务信号,也有一个lookup的方法
类似的还有很多,比如:serviceSignalData */serviceSignalNumber * /serviceSignalString *
4.声明诊断服务
diagRequest
diagRequest Door.defaultSessionStart req;
diagResponse
diagResponse Door.defaultSessionStart resp
5.声明系统变量或计时器
sysvar * :声明系统变量 类似的还有:sysvarInt */sysvarFloat */sysvarString *等
timer :声明一个定时器,时间单位为秒 类似的还有:msTimer,声明毫秒级定时器
timer t_sendmsg;
6.定义一个test case/test function
定义一个test case
testcase mytestcase() { }
testfunction :定义一个test function,它能被用在test case或test sequence中
7.其他
this :
在接收CAN对象或系统变量或环境变量的回调事件中,可以用this来指定这个接收的对象
on message 100 { byte byte_0; byte_0 = this.byte(0);
$
如果想直接给信号赋值,必须要在信号的前面加一个$符号
$EngineSpeed = 500.0;
.raw :读取信号的原始值 类似的还有.phys,读取信号的物理值
EngineMsg.EngineSpeed.raw
if, else, switch, case, default, for, while, continue, break, return都是关键字
这篇关于CAPL学习之路-关键字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享
- 2024-11-01如何使用Svg Sprite Icon简化网页图标管理
- 2024-10-31Excel数据导出课程:新手从入门到精通的实用教程
- 2024-10-31Excel数据导入课程:新手入门指南
- 2024-10-31RBAC的权限课程:新手入门教程
- 2024-10-31Svg Sprite Icon课程:新手入门必备指南
- 2024-10-31怎么配置 L2TP 允许多用户连接-icode9专业技术文章分享
- 2024-10-31怎么在FreeBSD上 安装 OpenResty-icode9专业技术文章分享
- 2024-10-31运行 modprobe l2tp_ppp 时收到“module not found”消息提醒是什么-icode9专业技术文章分享
- 2024-10-31FreeBSD的下载命令有哪些-icode9专业技术文章分享