跳转到内容

函数编辑器

BUSMASTER 可以作为可编程节点在 LIN 总线上工作。用户可以使用函数编辑器对不同的事件处理程序进行编程。编程语言为 C/C++。

支持六种类型的事件处理程序。总线事件 消息处理程序 定时器处理程序 按键处理程序 错误处理程序 DLL 处理程序

这些函数处理程序在构建并加载后,将在以下情况执行:总线连接和断开时。接收到消息时。时间间隔流逝时。按下按键时。检测到错误或错误状态发生变化时。加载/卸载 DLL 时。

用户在为事件处理程序编程时,还可以包含头文件名、添加全局变量和实用工具函数。所有这些函数都可以编辑并保存在扩展名为 “.cpp” 的文件中。源文件可以构建为 DLL。此 DLL 可以被动态加载。

函数编辑器中有三个窗格,如下所示 左窗格:将被称为窗格 1。右上窗格:将被称为窗格 2。右下窗格:将被称为窗格 3。

窗格 1 显示函数列表、包含的头文件以及定义的全局变量。窗格 2 显示源文件的内容。通过窗格 3,用户可以编辑所选函数的函数体。

LIN_Function_Editor.jpg

转到 LIN –> Node Simulation –> Configure 以打开 Configure Simulated Systems 窗口。在左窗格中右键单击 LIN Bus,然后选择 New Simulated SystemAdd Simulated System 。然后选择 “sim” 文件。

右键单击新模拟的系统并选择 Add Node 。该名称也将用作生成的 DLL 的基本名称。Node Details 将显示在右窗格中。### 创建新函数

按照上一章“函数编辑器的常规访问”中的说明进行操作。

在右窗格中的 File Details 下选择 Add New File… 以向节点添加新函数。函数编辑器将自动打开。### 编辑现有函数

按照上一章“函数编辑器的常规访问”中的说明进行操作。

在右窗格中的 File Details 下选择 Edit File… 以编辑节点的现有函数。### 包含头文件

用户在为事件处理程序编程时可以包含头文件名。为此,请遵循以下步骤:在窗格 1 中选择 Include Headers 类别并右键单击。弹出一个弹出菜单。选择 Add。出现一个对话框。单击 Browse 按钮以选择所需的头文件名,然后单击 OK 按钮。所选的头文件名将添加到窗格 2 的源文件中,同时也会添加到窗格 1 的 Include Headers 类别下。### 编辑包含头文件名

用户可以编辑头文件的名称,为此请遵循以下步骤 在窗格 1 中的 Include Header 类别下选择要编辑的 Include Header 文件名并右键单击。将显示一个弹出菜单。选择 Edit。将显示一个对话框。单击 Browse 按钮以选择所需的头文件,然后单击 OK 按钮。

所选的头文件将替换窗格 2 源文件中以及窗格 1 中 Include Headers 类别下的上一个头文件。### 删除处理程序

用户可以在打开以进行编辑的源文件中删除头文件、消息处理程序。定时器处理程序、按键处理程序、错误处理程序、DLL 处理程序和实用工具函数,为此请遵循以下步骤:在窗格 1 中选择要删除的项目并右键单击。将显示一个弹出菜单。选择 Delete。显示确认消息。选择 Yes

所选项目的定义将从窗格 2 的源文件以及窗格 1 中删除。### 添加消息处理程序

  1. 在窗格 1 中选择 Message Handlers 类别并右键单击。
  2. 将显示一个弹出菜单。
  3. 在选择 Add 菜单时。会弹出如下所示的对话框。LIN_Message_Handler.png
  4. 从此对话框中可以选择不同类型的消息处理程序。支持的不同类型的消息处理程序有 基于消息名称的消息处理程序。基于消息 ID 的消息处理程序。基于消息 ID 范围的消息处理程序。用于所有接收到的消息的消息处理程序。

可以使用单选按钮选择消息处理程序的类型。要添加基于消息名称的处理程序,相应的消息应在导入的数据库中可用。可以通过在选择消息处理程序后单击 Apply 按钮从此对话框中添加多个消息。

函数定义将添加到窗格 2 的源文件中,原型将添加到窗格 1 中的 Message Handlers 类别下。### 添加定时器处理程序

  1. 在窗格 1 中选择 Timer Handlers 类别并右键单击。
  2. 将显示一个弹出菜单。
  3. 选择 Add。出现一个对话框。
  4. 输入定时器处理程序名称,例如 “Time_One”,以及以毫秒为单位的定时器值。
  5. 选择 OK 按钮。
  6. 函数定义将自动添加到窗格 2 的源文件中,原型将添加到窗格 1 中的 Timer Handlers 类别下。

Note: 在定时器处理程序内部添加 Sleep 函数可能会对应用程序产生不利影响。在循环模式下最多可以同时运行 16 个定时器。超过 16 个的任何定时器将无法启动。### 添加按键处理程序

  1. 在窗格 1 中选择 Key Handlers 类别并右键单击。
  2. 将显示一个弹出菜单。
  3. 选择 Add。出现一个对话框,要求用户按下一个键。
  4. 按下用户想要为其编写处理程序的键。相同的键将显示在对话框中。
  5. 选择 OK 按钮或 Apply 按钮(如果要从同一对话框中添加更多按键处理程序)。

函数定义将自动添加到窗格 2 的源文件中,原型将添加到窗格 1 中的 Key Handlers 类别下。### 添加错误处理程序

  1. 在窗格 1 中选择 Error Handlers 类别并右键单击。
  2. 将显示一个弹出菜单。
  3. 选择 Add。会弹出如下所示的对话框,从此对话框中选择要由您的程序处理的错误处理程序类型,然后单击 OK 按钮。LIN_Error_Handlers.png

函数定义将自动添加到窗格 2 的源文件中,原型将添加到窗格 1 中的 Error Handlers 类别下。### 添加 DLL 处理程序

DLL 处理程序在加载 DLL 或卸载 DLL 时被调用。添加 DLL 处理程序的过程与添加错误处理程序的过程类似。### 添加实用工具函数

  1. 在窗格 1 中选择 Utility Functions 类别并右键单击。
  2. 弹出一个弹出菜单。
  3. 选择 Add。出现一个对话框。
  4. 可以从组合框中选择实用工具函数的返回类型,也可以直接输入。组合框将包含原始数据类型和数据库消息结构名称。
  5. 在编辑控件中输入函数原型,例如 “Func_One( int a, int b )”。
  6. 选择 OK 按钮。

函数定义将自动添加到窗格 2 的源文件中,原型将添加到窗格 1 中的 Utility Functions 类别下。### 全局变量

要添加/删除/修改全局变量,请遵循以下步骤。

  1. 在窗格 1 中选择 Global Variables 类别并双击。
  2. 窗格 3 将变为可编辑状态,并显示全局变量块。
  3. 更改此块以添加/删除/修改全局变量。

变量声明将自动添加到窗格 2 的源文件中。

Note: 使用全局变量块来使用宏、结构或联合定义。此块中给出的变量和定义的作用域遍及整个程序。### 编辑函数体

用户可以通过双击窗格 1 中显示的函数原型来编辑任何函数体。双击函数原型时,函数体将显示在窗格 3 中并准备好进行编辑。### 消息类型的变量

BUSMASTER 为数据库中定义的消息定义了结构。用户可以在编程时使用这些结构。请按照以下步骤添加消息类型的变量 编辑要添加数据库消息名称的函数。(参考:编辑函数体一节)在窗格 3 中右键单击。显示一个弹出菜单。选择 Insert Message。显示一个对话框,在 Message 列表下包含所有数据库消息。从列表中选择一条消息。选中对话框中的复选框选项。单击 Select 按钮。

所选的消息变量将显示在窗格 3 中,并在窗格 2 中同步更新。### 插入消息名称

用户可以添加消息结构标签,这可用于定义变量。请按照以下步骤将消息结构标签插入到函数中。编辑要添加数据库消息名称的函数。(参考:编辑函数体一节)在窗格 3 中右键单击。显示一个弹出菜单。选择 Insert Message。显示一个对话框,在 Message 列表下包含所有数据库消息。从列表中选择一条消息并单击 Select 按钮。所选消息将显示在窗格 3 中,并在窗格 2 中同步更新。### 插入信号名称

用户可以在编程时使用信号名称。信号名称必须与相应的消息变量结合使用。它是消息结构的成员。请按照以下步骤将信号名称插入到函数中。编辑要添加信号名称的函数。(参考:编辑函数体一节edit_function_body)在窗格 3 中右键单击。显示一个弹出菜单。选择 Insert Signal。显示一个对话框,在 Message 列表下包含所有数据库消息。从列表中选择一条消息。在 Signals 列表下将显示信号列表。选择一个信号并单击 Select 按钮。所选信号将显示在窗格 3 中,并在窗格 2 中同步更新。### 插入函数

BUSMASTER 提供 API 函数,可以在编程时使用。这些函数可用于与 BUSMASTER 应用程序进行交互。请按照以下步骤插入函数 编辑要添加原型的函数。(参考:编辑函数体一节)在窗格 3 中右键单击。显示一个弹出菜单。选择 Insert Function。显示一个对话框,其中包含一组函数原型。(API 列表)从列表中选择所需的函数原型并单击 OK 按钮。所选的函数原型将显示在窗格 3 中,并在窗格 2 中同步更新。


权威来源: BUSMASTER DITA help source LIN_Function_Editor.dita, compiled into BUSMASTER.CHM with the application.