主要内容

获取生成的代码的代码描述

您可以使用代码描述符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中的所有可用方法获取有关引用模型的更多信息。

相关话题