capl(can access programming language)是个用事件驱动思维玩转汽车电子开发的语言,继承了c的语法,

CAPL(CAN Access Programming Language)是个用事件驱动思维玩转汽车电子开发的语言,继承了C的语法,却把世界拆成了三种“触发器”。有了这三种事件,代码就能根据情况动起来。你在键盘上按F键或者Ctrl+F1,它就会立刻响应。时间到了,比如定时器走了一秒或者1秒,代码就会按照你的设计去执行。还有CAN网络里的每一帧报文,也能变成代码的按钮,一旦到达,代码就会跟着动。这个过程很直观,只要把报文ID写进on message后面就行,不管是单ID、范围ID、某个通道上的ID,甚至所有消息,都能用这一句话搞定。比如说,你要监测ID为0x7E0的报文,就写con message 0x7E0;要监测CAN1通道上ID为123的报文,就写on message CAN1.123;要是想把所有报文都捕捉下来,写on message就行(不过这个功能慎用,容易把日志给刷爆了);要是想监测0x7E0到0x7E8之间的报文,那就写on message 0x7E0-0x7E8。时间事件方面,CAPL给你准备了两种定时器:毫秒级的msTimer和秒级的timer。声明跟启动的语法差不多,主要是单位不同。比如你要声明一个20毫秒的定时器,就写msTimer myTimer;启动它20毫秒后触发一次,就写setTimer(myTimer, 20);要是想让它一直循环响下去,那就用setTimerCyclic(myTimer, 1),这样每一秒就响一次。想关掉它也很简单,一行cancelTimer(myTimer)就能解决。CAPL内置的数据类型跟C差不多,但在嵌入式场景用得很广泛。记住字节长度就是内存大小就行。无符号类型有byte(1字节)、word(2字节)、dword(4字节);有符号类型有int(2字节)、long(4字节);还有浮点类型float、double。只要记住“2字节等于int,4字节等于long或double”这条黄金分割线,选合适的变量就很快了。想让报文带数据出门,先给它起个名字:cmessage 0x7E0 i14229_extend。这个名字是给ID为0x7E0的报文起的,以后引用起来方便。接着在on key或者循环里给它填数据就行:按'a'键时发送这个报文,就把i14229_extend.dlc设置为8字节长度;然后给byte[0]赋值为x(x是变量或常数);其他字节也是这样赋值;最后用output(i14229_extend)把整帧报文送出去。只要把大括号都补上就行了。这下CAPL事件和数据类型的大致用法你应该都掌握了吧?