Вы можете использовать API дескриптора кода, чтобы получить мета-информацию о сгенерированном коде. Для каждой сборки модели генератор кода по умолчанию создает codedescriptor.dmr файл в папке сборки. При симуляции модели в режимах Accelerator и Rapid Accelerator, codedescriptor.dmr не сгенерирован.
Вы можете использовать дескриптор кода API, когда код сгенерирован. Используйте API дескриптора кода, чтобы описать эти элементы в сгенерированном коде:
Интерфейсы данных: входные порты, выходные порты, параметры, хранилища данных и внутренние данные.
Интерфейсы функций: инициализация, вывод, обновление и завершение.
Информация о выполнении интерфейсов данных и функций, например, требования к синхронизации каждой сущности интерфейса.
Информация о иерархии модели и описание кода ссылочных моделей.
The 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 =
5x1 cell array
{'Inports' }
{'Outports' }
{'Parameters' }
{'ExternalParameterObjects'}
{'InternalData' }
Чтобы получить список всех поддерживаемых интерфейсов данных, используйте getAllDataInterfaceTypes способ.
5. Для получения дополнительной информации о конкретном типе интерфейса данных используйте getDataInterfaces способ.
dataInterface = codeDescriptor.getDataInterfaces('Inports');
Этот метод возвращает свойства блоков Inport в сгенерированном коде.
6. Потому что эта модель имеет четыре входных порта, dataInterface является массивом coder.descriptor.DataInterface объекты. Получите детали первого Inport модели путем доступа к первому местоположению в массиве.
dataInterface(1)
ans =
DataInterface with properties:
Type: [1x1 coder.descriptor.types.Type]
SID: 'rtwdemo_comments:99'
GraphicalName: 'In1'
VariantInfo: [1x0 coder.descriptor.VariantInfo]
Implementation: [1x1 coder.descriptor.DataImplementation]
Timing: [1x1 coder.descriptor.TimingInterface]
Unit: ''
Range: [1x0 coder.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. Создайте coder.codedescriptor.CodeDescriptor объект для необходимой модели при помощи getCodeDescriptor функция.
codeDescriptor = coder.getCodeDescriptor('rtwdemo_roll');
4. Чтобы получить список всех типов интерфейсов функций в сгенерированном коде, используйте getFunctionInterfaceTypes способ.
functionInterfaceTypes = codeDescriptor.getFunctionInterfaceTypes()
functionInterfaceTypes =
2x1 cell array
{'Initialize'}
{'Output' }
Чтобы получить список всех поддерживаемых интерфейсов функции, используйте getAllFunctionInterfaceTypes способ.
5. Чтобы получить дополнительную информацию о конкретном типе интерфейса функции, используйте getFunctionInterfaces способ.
functionInterface = codeDescriptor.getFunctionInterfaces('Initialize')
functionInterface =
FunctionInterface with properties:
Prototype: [1x1 coder.descriptor.types.Prototype]
ActualReturn: [1x0 coder.descriptor.DataInterface]
VariantInfo: [1x0 coder.descriptor.VariantInfo]
FunctionOwner: [1x0 coder.descriptor.TypedRegion]
Timing: [1x1 coder.descriptor.TimingInterface]
ActualArgs: [1x0 coder.descriptor.DataInterface Sequence]
6. Для получения подробной информации можно расширить свойства. Чтобы получить функцию возврата значение, имя и аргументы:
functionInterface.Prototype
ans =
Prototype with properties:
Name: 'rtwdemo_roll_initialize'
Return: [1x0 coder.descriptor.types.Argument]
HeaderFile: 'rtwdemo_roll.h'
SourceFile: 'rtwdemo_roll.c'
Arguments: [1x0 coder.descriptor.types.Argument Sequence]
Используйте 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 =
1x1 cell array
{'rtwdemo_async_mdlrefbot'}
5. Чтобы получить coder.codedescriptor.CodeDescriptor объект для ссылочной модели используйте getReferencedModelCodeDescriptor способ.
refCodeDescriptor = codeDescriptor.getReferencedModelCodeDescriptor('rtwdemo_async_mdlrefbot');
Теперь можно использовать refCodeDescriptor объект для получения дополнительной информации о ссылке на модель с помощью всех доступных методов в API дескриптора кода.