CAPL编程基础

CAPL是CAN总线访问编程语言,在汽车电子开发中运行十分广泛,类似C语言,同时是基于事件建模的语言,事件类型包含三种:

总线事件
属性事件
时间时间

CAPL时间类型可以从一张表格清楚表示,图片素材来源网络

  1. 和时间相关用法

on timer myTimer //表示对myTimer设定的时间到反应

msTimer myTimer; //声明了一个ms定时器,定时单位是毫秒
timer myTimer; //声明了一个以秒为单位的定时器;

定时器设置:

setTimer(myTimer,20); //将定时器设置为20ms,并启动myTimer函数里的动作一次

setTimerCyclic(myTimer,1); //设置定时器myTimer为一个1s为周期的循环定时器;

cancelTimer(myTimer); //停止定时器myTimer

需要执行该时间时间的函数写法:

myTimer
{
tester.dlc =8;
tester.byte(0) = 0x02;
tester.byte(1) = 0x10;
tester.byte(2) = 0x03;
tester.byte(3) = 0x00;
tester.byte(4) = 0x00;
tester.byte(5) = 0x00;
tester.byte(6) = 0x00;
tester.byte(7) = 0x00;
output(tester);
}

  1. 消息键盘事件

on message 0x7E0 //监测到0x7E0报文的反应

on message UDSReqeust // 对UDSRequest反应

on message CAN1.123 // 对CAN1通道收到报文123的反应

on message * //对所有消息的反应

on message 0x7E0-0x7E8 //对0x7E0-0x7E8 之间报文的反应

on key‘F’ // 按键盘F时触发动作

on key Ctrl-F1 //按Ctrl+F1 触发动作

对于以上两种事件类型是常用到的功能,能满足绝大部分需求。

  1. CAPL中数据类型

无符号

byte (1个字节) word (2个字节) dword(4个字节)

有符号

int (2个字节) long (4个字节)

浮点型

float double
  1. 消息的申明

message 0x7E0 i14229_extend;

如果键盘时间出发送报文

on key ‘a’
{
i14229_extend.dlc = 8; //表示长度
i14229_extend.byte(0) = 0x02; //第0个
i14229_extend.byte(1) = 0x10;
i14229_extend.byte(2) = 0x03;
i14229_extend.byte(3) = 00;
i14229_extend.byte(4) = 00;
i14229_extend.byte(5) = 00;
i14229_extend.byte(6) = 00;
i14229_extend.byte(7) = 00;
output(i14229_extend); //发送该报文
}

如果接收到则作出反应并发出另一帧

on message 0x7E8
{
//extend session
if((this.BYTE(1) == 0x50) || (this.BYTE(2) == 0x03))
{
i14229_seca.dlc = 8;
i14229_seca.byte(0) = 0x02;
i14229_seca.byte(1) = 0x27;
i14229_seca.byte(2) = 0x01;
i14229_seca.byte(3) = 00;
i14229_seca.byte(4) = 00;
i14229_seca.byte(5) = 00;
i14229_seca.byte(6) = 00;
i14229_seca.byte(7) = 00;
output(i14229_seca);
}
}

  1. CAPL完整结构

通常可由三部分组成

定义全局变量
事件过程
自定义函数块

原文地址:https://zhuanlan.zhihu.com/p/66189196
lanwailan

  • 11
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值