得到代码生成的代码的描述
您可以使用代码描述符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方法的代码描述符。