В этом примере показано, как экспортировать определение и объявление глобальной переменной, что сгенерированный код использует в качестве сигнала.
float mySig;
extern float mySig;
1. Откройте модель ex_defn_decl
в качестве примера.
open_system('ex_defn_decl');
2. В Model Data Editor откройте вкладку Inports/Outports.
3. В Model Data Editor, для блока Inport, Типа данных набора к single
.
set_param('ex_defn_decl/In1','OutDataTypeStr','single');
4. Откройте приложение Embedded Coder.
5. Во вкладке C Code выберите Code Interface> Individual Element Code Mappings.
6. В редакторе Отображений Кода, на вкладке Inports, Классе памяти набора для блока Inport к ExportToFile
.
7. В Property Inspector, Идентификаторе набора к mySig
, Заголовочный файл к myDecls.h
, и файл определения к myDefns.c
.
cm = coder.mapping.api.get('ex_defn_decl'); setInport(cm,'In1','StorageClass','ExportToFile','Identifier','mySig','HeaderFile','myDecls.h','DefinitionFile','myDefns.c');
8. Сгенерируйте код из модели.
currentDir = pwd;
[~,cgDir] = rtwdemodir();
evalc('slbuild(''ex_defn_decl'')');
Сгенерированный заголовочный файл myDecls.h
объявляет глобальную переменную mySig
при помощи extern
ключевое слово.
file = fullfile('ex_defn_decl_ert_rtw','myDecls.h'); rtwdemodbtype(file,'/* Declaration for', ... 'extern real32_T mySig',1,1);
/* Declaration for custom storage class: ExportToFile */ extern real32_T mySig; /* '<Root>/In1' */
Сгенерированный исходный файл myDefns.c
задает и инициализирует mySig
.
file = fullfile('ex_defn_decl_ert_rtw','myDefns.c'); rtwdemodbtype(file,'/* Definition for', ... 'real32_T mySig;',1,1);
/* Definition for custom storage class: ExportToFile */ real32_T mySig; /* '<Root>/In1' */