CAPL(发音为“kapple”),是 Communication Access Programming Language 的缩写。本文是学习CAPL编程进行的总结,可参考方法用其发送报文。
1.打开CANoe软件新建工程,在创建的工程右击,添加虚拟ECU节点,选择运行方式为仿真。
2.在CANoe工具栏打开CAPL界面,编程后编译,没有错误,点击保存。至此,一份完整的CAPL编程就已经完成(程序的含义见第4步)。
3.回到CANoe界面,加载CAPL程序。
4.程序含义:10F(ID可自己编辑,前后一致即可)在1000ms时(时间可以自己调整)按照1000ms的周期(也可是10,100,10000)开始发送0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x24(内容可自行定义,这里字节8是运算值)。11F的Byte1是根据我设定的系统变量而变化,Byte2-7是直接赋值,Byte8也是运算结果。发送出来如下(赋值有变化,可不管),因为11F周期是2000ms,10F是1000ms,后面发送的报文就是10F发送2帧11F发送1帧。
5.编辑的CAPL程序中,定义11F的Byte1根据系统变量D1(随意命名)的值变化而变化。所以,在编程中,用到系统变量的需要在oe中添加,方法如图,系统变量的内容根据实际进行编辑。
6.注意:如果没有添加变量,CAPL中是无法在第33行的@sysvar::命令中找到,手动输入,编译或者运行时会出错。问题来了:如果想改变11F报文的Byte0的值,该怎么办呢?
方法一:提前在变量编辑的时候,把需要发送的值填进去。需要更改的话比较麻烦,需要停止运行后,重新修改保存开始......(实际和10F的byte0直接在CAPL中赋值是一样的)
方法二:使用oe强大的Panel面板,控制此变量,在报文发送过程中,可随意更改。具体如下:
panel面板创建完,选择保存路径,进行保存。panel面板会在独立页面自动打开(如果没有,手动打开即可)
7.至此,我们编写的CAPL脚本和脚本中调用的变量,都已经创建好了。运行添加好capl脚本的CANoe,并且在panel中随意修改,trace窗口监控报文。
写在最后:CAPL编程,Panel面板的功能还有很多,需要自行摸索。