主要内容

以编程方式创建代码定义

这个例子展示了如何以编程方式创建代码定义在嵌入式编码字典。自动化创建嵌入式编码字典在脚本或编程方式创建定义,使用这种编程接口。

在本例中,您创建一个嵌入式编码字典在仿真软件数据字典,这样多个模型可以共享代码定义。金宝app你创建代码定义,控制全球数据和函数的命名和位置。你也使用一个内存部分定义,包括数据和函数的编译指示将快速记忆。验证的架构设置代码定义,定义适用于一个模型,然后生成代码。

建立嵌入式编码字典

创建一个模型数据字金宝app典存储代码定义。存储数据字典中的定义使您能够使用多个模型的定义连接每个模型所示的数据字典应用代码生成定义

dataDictionary = 金宝appSimulink.data.dictionary.create (“dataDictionary.sldd”);

创建一个嵌入式编码字典数据字典。当您创建字典,代表它coder.Dictionary对象。使用对象上执行操作整个嵌入式编码字典和访问部分。

codeDictionary = coder.dictionary.create (“dataDictionary.sldd”);

coder.Dictionary对象包含三个coder.dictionary.Section对象代表嵌入式编码字典的部分:存储类、内存部分和功能定制模板。一个coder.dictionary.Section对象包含coder.dictionary.Entry对象代表了部分的定义。与一个定义和访问其属性,使用coder.dictionary.Entry对象表示。

当您创建一个嵌入式编码字典,字典加载的定义金宝app包那么嵌入式编码字典包含内置的定义。如果你有自定义代码定义存储在一个包,包的负载字典。当你使用嵌入式编码字典配置界面模型的代码,您可以应用定义从包你加载。

记忆的部分

创建内存部分定义,将条目添加到内存部分部分。存储类和功能定制模板驻留在相同的字典可以使用这些内存区域。在这个例子中,添加一个内存部分命名FastMem使用编译指示,分配内存。当你记忆部分适用于存储类或函数模板,生成的定义和声明是在记忆的部分。

memorySections = getSection (codeDictionary,“MemorySections”);msFast = addEntry (memorySections,“FastMem”);集(msFast,“PreStatement”,# pragma开始快速的);集(msFast,“评论”,“/ *快速片装内存* /”);集(msFast,“PostStatement”,# pragma快结束的);

存储类

对于这个示例,创建一个存储类命名ExportToPrivateHeader生成一个全局变量声明的头文件R_private.h美元和定义R_private.c美元。令牌$ R象征的名称为您生成代码根模型。在外部代码使用一个变量,应用这个存储类数据元素,包括头文件在外部代码。

storageClasses = getSection (codeDictionary,“StorageClasses”);exportToPrivateH = addEntry (storageClasses,“ExportToPrivateHeader”);集(exportToPrivateH,“HeaderFile”,“R_private.h美元”,“DataScope”,“出口”);

申请的内存部分FastMem存储类,使用coder.dictionary.Entry对象代表了记忆的部分。

集(exportToPrivateH,“MemorySection”,msFast);

创建另一个名为存储类定义ImportFromHeader外部代码定义的数据。因为存储类“DataScope”设置为“进口”,生成的代码读取和写入外部代码定义的变量。

importFromH = addEntry (storageClasses,“ImportFromHeader”);集(importFromH,“DataScope”,“进口”,“HeaderFile”,“R_input.h美元”,“DataInit”,“动态”);

功能定制模板

创建一个自定义的函数模板,创建另一个coder.dictionary.Section对象代表了部分功能定制模板。将一个条目添加到这一节,代表一个定义控制生成的入口点函数的外观。申请的内存部分FastMem函数模板。

functionTemplates = getSection (codeDictionary,“FunctionCustomizationTemplates”);fcGlobal = addEntry (functionTemplates,“GlobalFunctions”);集(fcGlobal,“FunctionName”,“$ R $ N”);集(fcGlobal,“MemorySection”,msFast);saveChanges (dataDictionary);

应用代码生成定义

确认代码定义的设置通过应用模型和生成代码。您可以配置的模型代码接口使用代码定义编程方式或通过使用映射编辑器的代码。

打开模型rtwdemo_configinterface和链接的模型创建的数据字典。

rtwdemo_configinterface set_param (“rtwdemo_configinterface”,“DataDictionary”,“dataDictionary.sldd”);

模型包含四个港口。三机一体配置为使用存储类吗ImportFromFile。对于本例,您配置其他港口默认从外部代码读取数据。模型还包含状态数据延迟块配置被外部代码访问。当你应用存储类ImportFromHeaderExportToPrivateHeader模型元素,生成的代码符合这个架构。

配置模型与代码生成定义,代码的映射模型。

厘米= coder.mapping.api.get (“rtwdemo_configinterface”);

使用代码映射配置数据使用您的存储类定义。状态数据的延迟块,指定存储类ExportToPrivateHeader

设置状态(厘米,rtwdemo_configinterface /延迟的,“StorageClass”,“ExportToPrivateHeader”);

指定默认的存储类ImportFromHeader根尺寸数据。对于模型的港口,默认情况下,生成的代码使用外部代码文件中定义的数据rtwdemo_configinterface_input.c。编译和链接这个外部文件当你构建生成的代码,设置配置参数CustomSourcertwdemo_configinterface_input.c

setDataDefault(厘米,“港口”,“StorageClass”,“ImportFromHeader”);set_param (“rtwdemo_configinterface”,“CustomSource”,“rtwdemo_configinterface_input.c”);

指定函数定制模板GlobalFunctions为默认执行的代码生成功能。

setFunctionDefault(厘米,“执行”,“FunctionCustomizationTemplate”,“GlobalFunctions”);

验证代码定义反映您的规范。

  1. 打开代码映射编辑器。在模型编辑器中金宝app,开放的嵌入式编码应用。C代码选项卡上,选择代码接口>默认的代码映射

  2. 在代码映射编辑器中,在数据默认值选项卡中,扩大港口和外港部分。的港口类别显示了存储类ImportFromHeader。在港口选项卡中,港口In2,In3,In4使用模型的默认存储类ImportFromHeader。的尺寸。三机一体有不同的存储类指定,ImportFromFile。此设置将覆盖默认的存储类,这样三机一体从不同的外部文件中读取数据。

  3. 信号/州X选项卡,显示了存储类ExportToPrivateHeader

  4. 功能默认值选项卡,执行类别显示模板GlobalFunctions

  5. 开放的嵌入式编码字典。在C代码选项卡上,选择代码接口>嵌入式编码字典。代码定义,您添加到字典中出现选项卡。

生成和验证的代码

为模型生成代码。

slbuild (“rtwdemo_configinterface”,“generateCodeOnly”,真正的);
# # #开始构建过程:rtwdemo_configinterface
tf =逻辑0
# # #成功完成代码生成:rtwdemo_configinterface模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = rtwdemo_configinterface代码生成的代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米22.013秒

的头文件rtwdemo_configinterface_private.h定义了延迟块状态数据存储类ExportToPrivateHeader。外部代码可以访问这个状态数据。

文件= fullfile (“rtwdemo_configinterface_ert_rtw”,“rtwdemo_configinterface_private.h”);rtwdemodbtype(文件,/ *存储类的,“# endif”);
/ *存储类的ExportToPrivateHeader * / / *快速片装内存* / # pragma开始快速走读生MYTYPE X;/ * < Root > /延迟的* / # pragma快结束

因为港口使用存储类规范,生成的头文件定义尺寸数据。相反,生成的文件rtwdemo_configinterface.h包括外部头文件存储类定义中指定。生成的代码读取尺寸数据从外部文件中定义的变量rtwdemo_configinterface_inputs.c

在生成的源文件rtwdemo_configinterface.c,执行(步骤)函数反映了函数的设置自定义模板GlobalFunctions。因为模板GlobalFunctions使用的内存部分FastMem,执行函数存储在内存部分,反映了prestatement poststatement,和评论你设置的FastMem定义。

file2 = fullfile (“rtwdemo_configinterface_ert_rtw”,“rtwdemo_configinterface.c”);rtwdemodbtype (file2,“/ *模型阶跃函数* /”,“/ *逻辑:”);
/ *模型阶跃函数* / / *快速片装内存* / # pragma开始快速空白rtwdemo_configinterface_step (void) {

配置嵌入式编码字典后,您可以与您的团队或组织分享字典。你和其他用户可以应用定义多个模型,模型使用相同的软件架构。

另请参阅

|||||

相关的话题