Определение и декларирование сигнальных данных

В этом примере показано, как экспортировать определение и объявление глобальной переменной, которую сгенерированный код использует в качестве сигнала.

Конструкция C

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 установите значение Data Type 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 установите значение Identifier равным 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' */

Похожие темы