Можно использовать API дескриптора кода, чтобы получить метаинформацию о сгенерированном коде. Для каждой сборки модели генератор кода, по умолчанию, создает файл codedescriptor.dmr в папке сборки. При симуляции модели в Акселераторе и Быстрых Режимах Accelerator, не сгенерирован codedescriptor.dmr.
Можно использовать API дескриптора кода, если код сгенерирован. Используйте API дескриптора кода, чтобы описать эти элементы в сгенерированном коде:
Интерфейсы данных: импорт, выходные порты, параметры и хранилища глобальных данных.
Функциональные Интерфейсы: инициализируйте, выведите, обновите, и оконечный.
Информация о выполнении данных и функциональных интерфейсов, таких как синхронизация требований каждой интерфейсной сущности.
Информация об иерархии модели и описание кода моделей, на которые ссылаются.
Объект coder.codedescriptor.CodeDescriptor описывает различные свойства для заданного интерфейса данных в сгенерированном коде. В модели rtwdemo_comments существует четыре импорта, один выходной порт и настраиваемый глобальный параметр. Для получения дополнительной информации об интерфейсах данных в вашей модели, используйте объект coder.codedescriptor.CodeDescriptor и его методы.
1. Создайте временную папку для сборки и инспекционного процесса.
currentDir = pwd; [~,cgDir] = rtwdemodir();
2. Откройте и создайте модель.
open_system('rtwdemo_comments'); evalc('rtwbuild(''rtwdemo_comments'')');

3. Создайте объект coder.codedescriptor.CodeDescriptor для необходимой модели при помощи функции getCodeDescriptor.
codeDescriptor = coder.getCodeDescriptor('rtwdemo_comments');
4. Чтобы получить список всех типов интерфейса данных в сгенерированном коде, используйте метод getDataInterfaceTypes.
dataInterfaceTypes = codeDescriptor.getDataInterfaceTypes()
dataInterfaceTypes =
5x1 cell array
{'Inports' }
{'Outports' }
{'Parameters' }
{'GlobalParameters'}
{'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.Double]
SID: 'rtwdemo_comments:1'
GraphicalName: 'In1'
VariantInfo: [0x0 coder.descriptor.VariantInfo]
Implementation: [1x1 coder.descriptor.StructExpression]
Timing: [1x1 coder.descriptor.TimingInterface]
Функциональные интерфейсы являются функциями точки входа в сгенерированном коде. В модели rtwdemo_roll функциями точки входа является model_initialize, model_step и model_terminate. Для получения дополнительной информации о функциональных интерфейсах в вашей модели, используйте объект coder.codedescriptor.CodeDescriptor.
1. Создайте временную папку для сборки и инспекционного процесса.
currentDir = pwd; [~,cgDir] = rtwdemodir();
2. Откройте и создайте модель.
open_system('rtwdemo_roll'); evalc('rtwbuild(''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: [0x0 coder.descriptor.DataInterface]
VariantInfo: [0x0 coder.descriptor.VariantInfo]
FunctionOwner: [0x0 coder.descriptor.TypedRegion]
Timing: [1x1 coder.descriptor.TimingInterface]
ActualArgs: [1x0 coder.descriptor.DataInterface List]
6. Можно далее подробно остановиться на свойствах получить подробную информацию. Получить функциональное возвращаемое значение, имя и аргументы:
functionInterface.Prototype
ans =
Prototype with properties:
Name: 'rtwdemo_roll_initialize'
Return: [0x0 coder.descriptor.types.Argument]
HeaderFile: 'rtwdemo_roll.h'
SourceFile: 'rtwdemo_roll.c'
Arguments: [1x0 coder.descriptor.types.Argument List]
Используйте объект coder.codedescriptor.CodeDescriptor получить целую информацию иерархии модели. Модель rtwdemo_async_mdlreftop имеет образцовый rtwdemo_async_mdlrefbot как модель, на которую ссылаются.
1. Создайте временную папку для сборки и инспекционного процесса.
currentDir = pwd; [~,cgDir] = rtwdemodir();
2. Откройте и создайте модель.
open_system('rtwdemo_async_mdlreftop'); evalc('rtwbuild(''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 Дескриптора Кода.