配置类接口
在本教程的此步骤中,您将配置 C++ 类接口。采用自定义的 C++ 类接口使生成的类能够满足特定代码标准或接口要求,以便生成的代码只需通过极少的生成后自定义就可以编译并集成到更大的架构中。
要自定义模型 CppClassWorkflowKeyIgnition
的类接口,请执行以下操作:
将类名称更改为
engine_status
。将类命名空间设置为
en1
。将模型的输入端口配置为 public,且使用 set 方法即可访问。
将模型的输出端口配置为 public,且使用基于聚合结构体的 get 方法即可访问所有输出端口。
更新初始化和终止入口方法的名称。
配置模型类名称和命名空间
如果模型
CppClassWorkflowKeyIgnition
未打开,请打开该模型。openExample('CppClassWorkflowKeyIgnition.slx')
在 C++ 代码选项卡上,点击代码接口并选择类名称和命名空间。
将 C++ 类名称字段编辑为
engine_status
。在 C++ 类命名空间字段中输入
en1
。点击确定。验证是以交互方式执行的,如果您输入无效的名称或命名空间,则会出现字段警告。
保存模型,然后点击编译来编译和重新生成代码。
在代码视图窗格中,搜索
engine_status
以查看生成的代码中的更改。
配置类成员的可见性和访问
打开代码映射编辑器。
要打开代码映射编辑器,请在 C++ 代码选项卡上,点击代码接口,然后选择代码映射。
点击数据选项卡以打开数据窗格。
代码映射电子表格显示模型元素每个类别的可见性和访问信息。
配置输入端口。
在数据可见性列中,选择公共。
在成员访问方法列中,选择内联方法。
配置输出端口。
在数据可见性列中,选择公共。
在成员访问方法列中,选择基于结构体的方法。
保存模型,然后点击编译来编译和重新生成代码。
在模型
CppClassWorkflowKeyIgnition
中,点击 Inport 模块keyState
。将光标放在模块上方的省略号菜单上,然后点击导航到代码。
代码视图会高亮与该模块对应的代码。
在代码视图中,点击搜索箭头以定位根输入端口
keyState
的 set 方法setkeyState
的公共声明和定义。聚合的根输出端口
getExternalOutputs
的 get 方法直接在输入端口的 set 方法下声明。将光标放在
getExternalOutputs
方法声明中的标识符ExtY
上方。可追溯性对话框显示与代码对应的定义。
在可追溯性对话框中,点击
struct ExtY
以定位该结构体。// External outputs (root outports fed by signals with default storage) struct ExtY { real_T engineState[3]; // '<Root>/engineState' real_T cycleTime; // '<Root>/cycleTime' };
在搜索栏中,键入
getExternalOutputs
,然后按 Enter 键以定位CppClassWorkflowKeyIgnition.cpp
中的方法定义。
配置模型函数
配置类方法名称。当您从模型生成 C++ 代码时,模型入口函数在生成的代码中显示为类方法。为了与外部代码或接口要求集成,您可以自定义生成方法的名称。
在代码映射编辑器中,点击函数选项卡以查看类方法。
配置初始化函数名称。
在方法名称列中,点击并编辑电子表格,将名称更改为
initIntegrator
。配置终止函数名称。
在方法名称列中,点击并编辑电子表格,将名称更改为
terminateIntegrator
。在方法预览列中验证更新后的名称。
保存模型,然后点击编译来编译和重新生成代码。
在代码视图中,搜索更新后的入口函数的方法名称,以查看生成的代码。
接下来,部署 C++ 生成代码。