您可以使用代码描述符API获取有关生成代码的元信息。对于每个模型构建,默认情况下,代码生成器创建一个codedescriptor.dmr.
文件在构建文件夹中。在加速器和快速加速器模式下模拟模型时,codedescriptor.dmr.
没有生成。
生成代码后,可以使用代码描述符API。使用代码描述符API在生成的代码中描述这些项目:
数据接口:Inports,Outports,参数,数据存储和内部数据。
功能接口:初始化,输出,更新和终止。
数据和功能接口的运行时间信息,例如每个接口实体的定时要求。
模型层次信息和引用模型的代码描述。
这Coder.Descriptor.datainterface.
对象描述生成代码中指定数据接口的各种属性。在模型中RTWDEMO_Comments.
,有四个Inports,One Outport和可调谐外部参数。有关模型中数据接口的更多信息,请使用Coder.codedescriptor.codedescriptor.
对象及其方法。
1.为构建和检查过程创建一个临时文件夹。
CurrentDir = PWD;[〜,cgdir] = rtwdemodir();
2.打开并构建模型。
Open_System('RTWDEMO_Comments');evalc('SLBUILD('RTWDEMO_Comments'')');
3.创建A.Coder.codedescriptor.codedescriptor.
通过使用所需模型的对象getodedescriptor.
功能。
codedescriptor = coder.getcodedescriptor('RTWDEMO_Comments');
4.要在生成的代码中获取所有数据接口类型的列表,请使用getDatainterfacetypes.
方法。
datainterfacetypes = codedescriptor.getdatainterfacetypes()
datainterfacetypes = 5x1 cell array {'inports'} {'soutports'} {'parameters'} {'ExternalParameterObjects'} {'InternalData'}
要获取所有支持的数据接口的列表,请使用万博1manbetxgetAlldatainterfacetypes.
方法。
5.要获取有关特定数据接口类型的更多信息,请使用getDatainterfaces.
方法。
datainterface = codedescriptor.getdatainterfaces('Inports');
此方法返回生成的代码中的Inport块的属性。
6.因为这个模型有四个因力,datainterface.
是一系列的Coder.Descriptor.datainterface.
对象。通过访问数组中的第一个位置获取模型的第一个Inport的详细信息。
datainterface(1)
ans = datainterface with属性:type:[1x1 coder.descriptor.types.type] sid:'rtwdemo_comments:99'graphicalname:'in1'variantinfo:[1x0 coder.descriptor.variantinfo]实现:[1x1编码器.descriptor.datimplation]时序:[1x1代码器.descriptor.timingInterface]单位:''范围:[1x0代码_descriptor.range]
函数接口是生成代码中的入口点函数。在模型中RTWDEMO_ROLL.
,入学点函数是model_initialize.
那model_step.
, 和model_terminate.
。有关模型中功能接口的更多信息,请使用Coder.Descriptor.FunctionInterface.
目的。
1.为构建和检查过程创建一个临时文件夹。
CurrentDir = PWD;[〜,cgdir] = rtwdemodir();
2.打开并构建模型。
Open_System('rtwdemo_roll');evalc('SLBUILD('RTWDEMO_ROLL'')');
3.创建A.Coder.codedescriptor.codedescriptor.
通过使用所需模型的对象getodedescriptor.
功能。
codedescriptor = coder.getcodedescriptor('rtwdemo_roll');
4.要在生成的代码中获取所有功能界面类型的列表,请使用GetFunctionInterCerfacetypes.
方法。
functionterfacetypes = codedescriptor.getFunctionInterfaceTypes()
FunctionInterfacetypes = 2x1单元阵列{'initialize'} {'输出'}
要获取所有支持的功能接口的列表,请使用万博1manbetxGetAllFunctionIntericerFacetypes.
方法。
5.要获取有关特定功能界面类型的更多信息,请使用getFunctionInterClace.
方法。
functionInterface = codedescriptor.getFunctionInterfaces('初始化')
functionInterface =带有属性的函数接口:prototype:[1x1 coder.descriptor.types.prototype] vectentreturn:[1x0 coder.descriptor.datainterface] variantinfo:[1x0 coder.descriptor.variantinfo] fornamower:[1x0 coder.descriptor.typedregion]时间:[1x1 coder.descriptor.timingInterface] actumentargs:[1x0 coder.descriptor.datainterface序列]
6.您可以进一步扩展属性以获取详细信息。要获取函数返回值,名称和参数:
functionInterface.Prototype.Prototype.
ANS =具有属性的原型:名称:'RTWDEMO_ROLL_INITIALIZE'return:[1x0 coder.descriptor.types.argument] headerfile:'rtwdemo_roll.h'sourcefile:'rtwdemo_roll.c'参数:[1x0 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.创建A.Coder.codedescriptor.codedescriptor.
通过使用所需模型的对象getodedescriptor.
功能。
codedescriptor = coder.getcodedescriptor('rtwdemo_async_mdlreftop');
4.使用使用的列表所有引用的模型getreferencedModelnames.
方法。
Refmodels = codedescriptor.getreferencedModelnames()
Refmodels = 1x1 Cell Array {RTWDEMO_ASYNC_MDLREFBOT'}
5.获得Coder.codedescriptor.codedescriptor.
对象的引用模型,使用getreferencedModelCodEdESCRIPTOR
方法。
Refcodedescriptor = codedescriptor.getreferencedModelCodeDeDeScriptor('RTWDEMO_ASYNC_MDLREFBOT');
你现在可以使用Refcodedescriptor.
对象通过使用代码描述符API中的所有可用方法获取有关引用模型的更多信息。