CANoe CAPL编程
CANoe CAPL编程 1. CAPL概述 与Vspy的"C Code Interface"一样;在CANoe的使用中,一样提供了我们进行二次编程开发的工具——”CAPL Browser”。通过CAPL的编程,我们可以在节点上完成更为复杂的功能需求。操作如下:在CANoe工程的”Simulation Setup”界面下的左侧的网络节点中,点击铅笔形状的图标,进入CAPL编辑界面(若当前节点还没有创建对应的CAPL程序,则此时会先提示输入CAPL程序名,并保存为.can后缀的文件)
1.1 CAPL语言特性 CAPL(Communication Access Programming Laguage)语言是类C语言,语法其实与C语言很相似,但同时又包含了一些C++的特性,如this指针、事件等; 应用于Vector CAN工具节点的编程,是基于事件建模的语言; 可以使用write()函数进行调试,用于将调试信息输出到CANoe的write窗口上; 通过output()函数进行指定报文的发送; 通常是通过环境变量事件与CANoe面板进行关联,实现交互; 提供调用dll文件的方法(操作见"关于CAPL中对dll的调用操作"一文);这样保证了对由其他语言封装好的程序模块的调用; 1.2 CAPL的程序结构 如下,一个完整的CAPL程序的结构包含了头文件、全局变量、事件函数、自定义函数;当然不是每个因素都要有,视具体程序功能确定。
1.3 CAPL的数据类型 1.4 CAPL事件类型概述 CAPL是基于事件建模的语言,从1.2小节对CAPL的程序结构的介绍也可以看出,关于CAPL的运用主要就是在于熟悉其事件的使用;其常用的事件如下:
事件过程语法结构中 蓝色字体表示该程序的关键字,深红色字体表示用户自定义的名称。
{…}内是CAPL程序体,用户可根据需要使用CAPL语言编写。
2. CAPL事件类型 2.1 系统事件 在CAPL的系统事件中,有preStart、start、preStop、stopMeasurement这4种。我们可以根据需要在相应的系统事件函数接口中定义想要进行的操作;当工程运行时,下述系统事件的发生顺序依次是
preStart-->start-->preStop-->stopMeasurement 关于系统事件的定义格式如下:
on preStart /*系统事件,初始化时执行*/ { resetCan(); /*CAPL接口函数,用于复位CAN控制器*/ } on start /*系统事件,工程开始时执行*/ { write(“Just A Try”); /*write()函数将字符串信息在”write”窗口输出*/ } on preStop /*系统事件,工程预备停止时执行;发生stopMeasurement事件前面*/ { write("The Project Will Stop!”); } on stopMeasurement /*系统事件,工程停止时执行*/ { write("The End!\n"); } 2.