在使用CANoe工程实现自动化的过程中,我们必然会使用到CAPL脚本。CAPL脚本的保存格式一般有两种,一种是.can,另一种是.cin。这两种格式之间最主要的区别是: .cin格式主要用来充当头文件,有点类似于C语言中的头文件;.can文件一般是存放编译的脚本,也可以充当头文件。如何用好CAPL,我们首先需要了解和明白CAPL的编译环境 —— CAPL Browser。
启动页面
打开页面如下。我将整个区域划分为3个大的模块。
1 —— 菜单栏
2 —— 导航栏
3 —— 工作区
菜单栏
File 菜单栏
File菜单栏具体支持的操作已经全部列举在了下方的图片中。
基本上都是Windows系统里差不多的操作内容。但是存在了一个比较特殊的操作项(Encrypt CAPL File)选项。该选项能提供加密服务。加密操作完成之后,会自动生成加密文件.canencr/.cinencr。
但是需要注意的是:
a. 如果选择加密,则需要把原来的.can/.cin文件删除,才算真正完成了加密。否则依然能够编译与保存。
b. 加密之后,无法解密。只能保留加密前的脚本与状态。
Home 菜单栏
Home菜单栏具体支持的操作已经全部列举在了下方的图片中。
这边想要着重介绍一下两个操作(Navigate Forward 与 Navigate Backwards)。为什么提及到这两个操作呢?是因为在实际的调试过程中,如果我们存在多层的嵌套与引用,那么在查询脚本的过程中可能会跳转多次。但是每一次跳转,再回到上一层的脚本中,并不能直接跳转至我们上次鼠标所点击的位置。这两个操作(Navigate Forward 与 Navigate Backwards)可以让我们直接跳转至上一次或下一次的鼠标位置,并直接显示。
另外一个介绍的操作(Expand All 与 Collapse All)。这个操作有助于我们更简洁的获取到我们需要的函数。因为在编译的过程中,我们的函数会越来越多,但是并不是每一次我们都需要查阅函数、用例的具体步骤,所有可以使用到这两个操作来简化工作区的代码展示。
Filter 菜单栏
这边我没有使用过Filter菜单栏,所以这里无法进行展开描述。
Debug 菜单栏
Debug菜单栏具体支持的操作已经全部列举在了下方的图片中。基本也是一些基本的调试操作。这里我一般不通过这个debug模式来调试我所编译的脚本。基本上选择编译一次,如果存在错误就可以通过output 输出栏就知道错误类型以及如何更改。至于脚本编译成功之后,仍然不能满足测试步骤的输出,我一般会使用到Write窗口进行调试,可以参考我的另一篇文章:CPAL脚本自动化测试 ———— Write函数的使用与输出格式
Layout 菜单栏
Layout菜单栏具体支持的操作已经全部列举在了下方的图片中。这个操作栏主要是针对于CAPL Browser的用户页面展示。例如进行水平分区、垂直分区等等操作来方便用户进行脚本编译和coding。
导航栏
导航栏主要是对右侧代码区的代码进行一个目录性质的归纳。对于同一类的性质的,会归纳为一类。
Includes:表明已经引用的头文件。可以是.cin/.can文件。
Variables:定义全局变量、以及一些需要定义的结构体等相关的内容。
System:系统层面的事件(例如:timer,key等事件)
Value Objects:信号/变量的值的复制与监测
Autosar PDU:目前尚未使用过
CAN:CAN网络中的相关事件
Diagnostics:目前尚未使用过
Functions:用户自定义的函数(可多层嵌套)
Test Functions:用户自定义的测试函数 (CANoe 11.0 版本及之前版本,无法嵌套)
Test Cases:用户定义的测试用例
Test Control:CAPL测试节点的主函数(Main)
这边我们可以非常直接的看到我们脚本的结构,并且通过双击可以快速跳转至我们的目标函数/操作。
工作区
这里是我们编写代码的地方。具体的语法我们可以通过F1进入到CAPL Browser中的帮助文件寻找。同时,CAPL 提供了大量的封装函数,如果想要实现某些功能,我们可以直接调用先用的函数来完成我们的预期。
此外,我认为非常好的一个地方是:如果你出现了编译层面的错误,会出现相对应的错误提示。这是我使用过相对来说比较友好的一个语言环境。也有可能是我平时编程不多,使用的语言也比较匮乏。
选择Home菜单栏中的编译选项之后,你会得到编译的结果。具体的输出页面如下。这里跟其他的语言类似,没有出现Error则不会影响脚本的正常运行。