Чтобы получить сгенерированный тип и имя импорта и структур выходного порта, используйте API дескриптора кода. Генератор кода хранит эту информацию в DataImplementation поле объекта на DataInterface возразите, когда это сгенерирует код.
Чтобы соединить интерфейсом с вашим сгенерированным кодом с другими компонентами вашего приложения, используйте API дескриптора кода.
1. Откройте модель.
open_system('rtwdemo_sum');
2. Создайте модель.
slbuild('rtwdemo_sum');### Starting build procedure for: rtwdemo_sum ### Successful completion of build procedure for: rtwdemo_sum Build Summary Top model targets built: Model Action Rebuild Reason ============================================================================================ rtwdemo_sum Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 12.777s
Сгенерированный код включает структуру, представляющую импорт.
/* External inputs (root inport signals with default storage) */ ExtU rtU;
3. Получите объект дескриптора кода.
codeDescObj = coder.getCodeDescriptor('rtwdemo_sum')codeDescObj =
CodeDescriptor with properties:
ModelName: 'rtwdemo_sum'
BuildDir: '/tmp/BR2021bd_1751886_255755/mlx_to_docbook1/tpc60152a5/simulinkcoder-ex78186698/rtwdemo_sum_ert_rtw'
4. Получите список типов интерфейса данных в сгенерированном коде.
dataInterfaceTypes = codeDescObj.getDataInterfaceTypes()
dataInterfaceTypes = 2x1 cell
{'Inports' }
{'Outports'}
5. Получите DataInterface объект, который представляет импорт.
inports = codeDescObj.getDataInterfaces('Inports')inports =
1x2 DataInterface array with properties:
Type
SID
GraphicalName
VariantInfo
Implementation
Timing
Unit
Range
6. Получите Implementation объект, который представляет первый импорт. В этом примере импорт каждый представлен как StructExpression, который является подклассом DataImplementation.
impl = inports(1).Implementation
impl =
StructExpression with properties:
Type: [1x1 coder.descriptor.types.Type]
BaseRegion: [1x1 coder.descriptor.TypedRegion]
ElementIdentifier: 'In1'
Variant: ''
7. Получите Type из первого импорта. Type из импорта real_T.
implType = impl.Type
implType =
Double with properties:
Identifier: 'real_T'
Name: 'double'
ReadOnly: 0
Volatile: 0
WordLength: 64
Signedness: 1
8. Получите BaseRegion из первого импорта. BaseRegion представляет структуру, которая содержит импорт. BaseRegion rtU.
baseRegion = impl.BaseRegion
baseRegion =
Variable with properties:
Type: [1x1 coder.descriptor.types.Type]
Identifier: 'rtU'
VarOwner: 'rtwdemo_sum'
StorageSpecifier: ''
9. Получите Type из BaseRegion. Type из BaseRegion ExtU.
baseRegionType = baseRegion.Type
baseRegionType =
Struct with properties:
Identifier: 'ExtU'
Name: 'ExtU'
ReadOnly: 0
Volatile: 0
Elements: [1x2 coder.descriptor.types.AggregateElement Sequence]
Checksum: [1x0 Integer Sequence]