CAPL Script

开发环境搭建

学习目标

完成本篇后,你将能够:

  • 了解 CANoe 工程的基本结构
  • 熟悉 CAPL Browser 的界面布局和核心功能
  • 独立创建、编写、编译一个 CAPL 程序
  • 将 CAPL 节点添加到仿真环境并运行

准备工作

在开始之前,请确保你已经安装了 CANoe。如果你还没有安装,请联系你的 IT 部门或从 Vector 官网获取试用版。

CANoe 工程是什么?

CANoe 工程(.cfg 文件)是你所有工作的容器。它包含:

  • 网络配置:定义了使用哪些总线(CAN、LIN、FlexRay 等)
  • 数据库.dbc 文件,定义了消息和信号的含义
  • 仿真节点:你的 CAPL 程序将作为仿真节点运行
  • 测试配置:自动化测试模块和测试用例

你可以把 CANoe 工程想象成一个"虚拟汽车"——里面有各种 ECU(仿真节点),它们通过总线(网络)互相通信。

[!SCREENSHOT]
位置:CANoe 主界面
内容:展示一个典型的 CANoe 工程结构
标注:圈出 Simulation Setup 和 Configuration 面板


认识 CAPL Browser

CAPL Browser 是 CAPL 的集成开发环境(IDE)。你将在这里编写、编译和调试所有 CAPL 代码。

打开 CAPL Browser

有两种方式打开 CAPL Browser:

方式一:从 CANoe 主界面

  1. 打开一个 CANoe 工程
  2. 在菜单栏选择 ViewCAPL Browser

方式二:从仿真节点

  1. Simulation Setup 窗口中,双击一个 CAPL 节点
  2. CAPL Browser 会自动打开该节点的源代码

[!SCREENSHOT]
位置:CANoe 菜单栏
内容:View 菜单展开,显示 CAPL Browser 选项
标注:用红框圈出 CAPL Browser 菜单项

CAPL Browser 界面布局

打开 CAPL Browser 后,你会看到以下核心区域:

区域 功能
Ribbon(功能区) 顶部工具栏,包含文件操作、编译、调试等功能
Text Editor(文本编辑器) 中央区域,编写 CAPL 代码的地方
Navigator(导航器) 左侧面板,快速跳转到代码中的函数和事件
CAPL Function Explorer(函数浏览器) 右侧面板,显示所有可用的 CAPL 函数
Symbol Explorer(符号浏览器) 显示数据库中定义的消息和信号
Output Window(输出窗口) 底部区域,显示编译结果和错误信息

[!SCREENSHOT]
位置:CAPL Browser 完整界面
内容:展示上述所有区域
标注:用编号标注各个区域(1-功能区, 2-编辑器, 3-导航器, 4-函数浏览器, 5-输出窗口)

Ribbon 功能区

CAPL Browser 的 Ribbon 分为几个主要标签:

  • File:文件操作(新建、打开、保存)
  • Home:编译、编辑工具、环境导入
  • Filter:过滤显示的函数和符号
  • Debug:断点管理、运行时错误查找

其中,Home 标签是你最常用的,特别是 Compile(编译)按钮。


动手实践:Hello, CANoe!

现在,让我们一起创建你的第一个 CAPL 程序!

步骤 1:新建 CAPL 文件

  1. 在 CAPL Browser 中,点击 File 功能区
  2. 点击 New 按钮
  3. 选择 CAPL File
  4. 系统会在编辑器中打开一个新的空白标签页

[!SCREENSHOT]
位置:CAPL Browser → File 功能区
内容:展示 New 按钮和下拉菜单
标注:圈出 "CAPL File" 选项

此时你会看到一个空白的编辑区域,准备好接受你的代码了。

步骤 2:编写第一个事件

在编辑器中输入以下代码:

on key 'a'
{
    write("Hello, CANoe!");
}

让我们逐行理解这段代码:

on key 'a'      // When the user presses the 'a' key on the keyboard
{
    write("Hello, CANoe!");  // Print this message to the Write window
}
  • on key 'a':这是一个事件处理器(event handler),表示"当按下键盘上的 'a' 键时"
  • write():这是 CAPL 的内置函数,用于在 CANoe 的 Write 窗口输出文本

步骤 3:保存文件

  1. Ctrl + S 或点击工具栏的保存图标
  2. 选择保存位置(建议保存在 CANoe 工程目录下)
  3. 输入文件名,如 HelloWorld.can

提示:CAPL 源文件的扩展名是 .can,编译后会生成 .cbf 文件(CAPL Binary Format)。

步骤 4:编译程序

  1. 点击 Home 功能区中的 Compile 按钮(或按 F9 快捷键)
  2. 查看底部的 Output Window(输出窗口)

如果一切正常,你会看到类似这样的输出:

Compiling HelloWorld.can...
0 error(s), 0 warning(s)

[!SCREENSHOT]
位置:CAPL Browser → Output Window
内容:显示编译成功的消息
标注:圈出 "0 error(s), 0 warning(s)"

恭喜! 你的第一个 CAPL 程序已经编译成功了。

步骤 5:将 CAPL 节点添加到仿真环境

编译成功只是第一步。要让程序真正运行,你需要把它添加到 CANoe 的仿真环境中:

  1. 回到 CANoe 主界面
  2. 打开 Simulation Setup 窗口(ViewSimulation Setup
  3. 在网络节点树中右键点击,选择 Insert Network Node
  4. 在弹出的对话框中,浏览并选择你刚才保存的 HelloWorld.can 文件
  5. 点击确定,节点就会出现在仿真环境中

[!SCREENSHOT]
位置:CANoe Simulation Setup 窗口
内容:右键菜单展示 Insert Network Node 选项
标注:圈出菜单项和新添加的节点

步骤 6:运行并测试

  1. 确保 Write 窗口已打开(ViewWrite
  2. 点击工具栏的 Start(开始测量)按钮,或按 F9
  3. 按下键盘上的 a
  4. 观察 Write 窗口

你应该会看到:

Hello, CANoe!

[!SCREENSHOT]
位置:CANoe Write 窗口
内容:显示 "Hello, CANoe!" 输出
标注:圈出输出文本和时间戳

太棒了! 你已经成功创建并运行了你的第一个 CAPL 程序!


常见问题排查

在这个过程中,你可能会遇到一些问题。以下是最常见的情况和解决方法:

问题 1:编译报错

现象:Output Window 显示红色错误信息。

排查步骤

  1. 双击错误信息,编辑器会自动跳转到出错的代码行
  2. 检查语法是否正确(括号是否匹配、分号是否遗漏)
  3. 确保字符串使用英文双引号 ",而不是中文引号

常见错误示例

// Wrong: Missing semicolon
write("Hello")

// Correct:
write("Hello");

问题 2:按键没有反应

现象:按下 a 键,Write 窗口没有任何输出。

排查步骤

  1. 确认测量已经启动(工具栏显示"运行中"状态)
  2. 确认 CAPL 节点已正确添加到 Simulation Setup
  3. 确认节点已启用(节点图标没有被划掉)
  4. 确认焦点在 CANoe 主窗口上(而不是其他应用程序)

问题 3:找不到 Write 窗口

解决方法

  • 点击菜单 ViewWrite
  • 或者在工具栏的 Window 下拉菜单中选择 Write

问题 4:特殊字符导致编译失败

重要提示:CAPL 代码中(引号外)不允许使用特殊字符,包括:

  • 中文字符
  • 德语变音符号(ä, ö, ü)
  • 某些特殊空格字符

如果你的注释需要使用中文,请确保使用 UTF-8 编码保存文件,并将中文放在引号内的字符串中或完全使用英文注释。


本篇总结

通过本篇的学习,我们完成了:

  • 了解了 CANoe 工程的基本结构和概念
  • 熟悉了 CAPL Browser 的界面布局(编辑器、导航器、输出窗口等)
  • 动手创建了第一个 CAPL 程序:响应按键事件并输出文本
  • 学会了编译程序、添加仿真节点、运行测量的完整流程
  • 掌握了几个常见问题的排查方法

课后练习

  1. 扩展练习:修改程序,让按下 b 键时输出 "Goodbye, CANoe!"。提示:你需要添加另一个 on key 事件。

  2. 探索练习:尝试使用 writeEx() 函数代替 write(),观察输出有什么不同。

  3. 挑战练习:创建一个程序,按下 1 键输出 "One",按下 2 键输出 "Two",按下 3 键输出 "Three"。