主要内容

得到代码生成的代码的描述

您可以使用代码描述符API来获取关于生成的代码的元数据。对于每个模型构建、代码生成器在默认情况下,创建一个codedescriptor.dmr文件建立文件夹。当在加速器模拟模型和快速加速器模式,codedescriptor.dmr不是生成的。

您可以使用API的代码描述符一旦生成的代码。使用API的代码描述符来描述这些项目在生成的代码:

  • 数据接口:港口、外港、参数、数据存储和内部数据。

  • 接口函数:初始化、输出、更新和终止。

  • 运行时信息数据和函数的接口,每个接口实体的时间要求等。

  • 模型层次结构信息和代码引用模型的描述。

获得数据接口的信息

coder.descriptor.DataInterface对象描述各种属性中指定的数据接口生成的代码。在模型中rtwdemo_comments有四个港口,一个输出港,外部参数可调。关于数据接口的更多信息在你的模型中,使用coder.codedescriptor.CodeDescriptor对象及其方法。

1。创建一个临时文件夹的建立和检验过程。

currentDir = pwd;[~,cgDir] = rtwdemodir ();

2。开放和建立模型。

open_system (“rtwdemo_comments”);evalc (“slbuild (“rtwdemo_comments”)”);

3所示。创建一个coder.codedescriptor.CodeDescriptor通过使用对象所需的模型getCodeDescriptor函数。

codeDescriptor = coder.getCodeDescriptor (“rtwdemo_comments”);

4所示。获取所有数据接口类型的列表在生成的代码中,使用getDataInterfaceTypes方法。

dataInterfaceTypes = codeDescriptor.getDataInterfaceTypes ()
dataInterfaceTypes = 5 x1单元阵列{“港口”}{外港的}{“参数”}{‘ExternalParameterObjects} {' InternalData '}

获得一个列表的所有受支持的数据接口,使用金宝appgetAllDataInterfaceTypes方法。

5。获得更多的信息关于一个特定数据接口类型,使用getDataInterfaces方法。

dataInterface = codeDescriptor.getDataInterfaces (“港口”);

这个方法返回属性的轮廓尺寸块生成的代码。

6。因为这个模型有四个港口,dataInterface是一个数组的coder.descriptor.DataInterface对象。获得的第一个尺寸模型的细节通过访问第一个数组中的位置。

dataInterface (1)
ans = DataInterface属性:类型:[1 x1 coder.descriptor.types.Type]席德:“rtwdemo_comments: 99”GraphicalName:“三机”VariantInfo: [1 x0 coder.descriptor.VariantInfo]实现:[1 x1 coder.descriptor.DataImplementation]时间:1 x1 coder.descriptor.TimingInterface单元:”范围:[1 x0 coder.descriptor.Range]

获取函数接口信息

函数接口的入口点函数生成的代码。在模型中RollAxisAutopilot入口点函数model_initialize,model_step,model_terminate。关于函数接口的更多信息在你的模型中,使用coder.descriptor.FunctionInterface对象。

2。开放和建立模型。

cd (currentDir) open_system (“RollAxisAutopilot”)slbuild (“RollAxisAutopilot”)
# # #开始构建过程:RollAxisAutopilot # # #成功完成构建过程:RollAxisAutopilot模型建立目标:总结构建模型重建行动的原因= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = RollAxisAutopilot代码生成和编译。代码生成信息文件不存在。1 1模型的建立(0模型已经更新)构建持续时间:0 h 0米12.946秒

3所示。创建一个coder.codedescriptor.CodeDescriptor通过使用对象所需的模型getCodeDescriptor函数。

codeDescriptor = coder.getCodeDescriptor (“RollAxisAutopilot”);

4所示。获得一个列表的所有函数接口类型在生成的代码中,使用getFunctionInterfaceTypes方法。

functionInterfaceTypes = codeDescriptor.getFunctionInterfaceTypes ()
functionInterfaceTypes = 2 x1单元阵列{“初始化”}{“输出”}

获得一个列表的所有支持函数接口,使用金宝appgetAllFunctionInterfaceTypes方法。

5。获得更多的信息关于一个特定的函数接口类型,使用getFunctionInterfaces方法。

functionInterface = codeDescriptor.getFunctionInterfaces (“初始化”)
functionInterface = functionInterface属性:原型:[1 x1 coder.descriptor.types.Prototype] ActualReturn: [1 x0 coder.descriptor.DataInterface] VariantInfo: [1 x0 coder.descriptor.VariantInfo] FunctionOwner: [1 x0 coder.descriptor.TypedRegion]时间:[1 x1 coder.descriptor.TimingInterface] ActualArgs: [1 x0 coder.descriptor.DataInterface序列)

6。你可以进一步扩大属性来获取详细信息。函数返回值,名称和参数:

functionInterface.Prototype
ans =原型的属性:名称:“RollAxisAutopilot_initialize”返回:[1 x0 coder.descriptor.types.Argument] HeaderFile:“RollAxisAutopilot。h RollAxisAutopilot源文件:。c '参数:[1 x0 coder.descriptor.types.Argument序列)

得到模型层次结构的信息

使用coder.codedescriptor.CodeDescriptor对象来获得整个模型层次结构的信息。该模型rtwdemo_async_mdlreftop有模型rtwdemo_async_mdlrefbot作为参考模型。

1。创建一个临时文件夹的建立和检验过程。

currentDir = pwd;[~,cgDir] = rtwdemodir ();

2。开放和建立模型。

open_system (“rtwdemo_async_mdlreftop”);evalc (“slbuild (“rtwdemo_async_mdlreftop”)”);

3所示。创建一个coder.codedescriptor.CodeDescriptor通过使用对象所需的模型getCodeDescriptor函数。

codeDescriptor = coder.getCodeDescriptor (“rtwdemo_async_mdlreftop”);

4所示。得到所有被引用的模型使用的列表getReferencedModelNames方法。

refModels = codeDescriptor.getReferencedModelNames ()
refModels = 1 x1单元阵列{' rtwdemo_async_mdlrefbot '}

5。获取coder.codedescriptor.CodeDescriptor对象引用的模型,使用getReferencedModelCodeDescriptor方法。

refCodeDescriptor = codeDescriptor.getReferencedModelCodeDescriptor (“rtwdemo_async_mdlrefbot”);

您现在可以使用refCodeDescriptor对象来获得更多的信息参考模型通过使用所有可用的API方法的代码描述符。

相关的话题