Чтобы получить сгенерированный тип и имя импорта и структур выходного порта, используйте 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]