Создайте псевдонимы типа данных путем генерации typedef
операторы.
typedef float float_32;
Чтобы создать псевдоним типа данных в Simulink®, используйте Simulink.AliasType
. Генератор кода создает typedef
оператор в сгенерированном коде.
Встроенный тип данных Simulink single
соответствует типу данных C float
.
1. В командной строке создайте Simulink.AliasType
возразите названному float_32
это представляет псевдоним single
.
float_32 = Simulink.AliasType('single');
float_32 = Simulink.AliasType('single');
2. Откройте модель ex_typedef
в качестве примера.
ex_typedef
3. В Model Data Editor откройте вкладку Inports/Outports.
4. В меню Change View выберите Design
.
5 В модели, выберите блок Inport.
6. В Model Data Editor, для блока Inport, Типа данных набора к float_32
.
set_param('ex_typedef/In1','OutDataTypeStr','float_32');
7. Откройте приложение Embedded Coder.
8. Во вкладке C Code выберите Code Interface> Individual Element Code Mappings.
9. В редакторе Отображений Кода, на вкладке Inports, Классе памяти набора для блока Inport к ExportedGlobal
. Блок Inport появляется в сгенерированном коде как отдельная глобальная переменная.
10. В Property Inspector, для блока Inport, устанавливает свойство Code> Identifier на mySig
.
cm = coder.mapping.api.get('ex_typedef'); setInport(cm,'In1','StorageClass','ExportedGlobal','Identifier','mySig');
11. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.
currentDir = pwd;
[~,cgDir] = rtwdemodir();
evalc('rtwbuild(''ex_typedef'')');
Сгенерированный заголовочный файл ex_typedef.h
задает псевдоним типа данных float_32
.
file = fullfile('ex_typedef_ert_rtw','ex_typedef.h'); rtwdemodbtype(file,'#ifndef DEFINED_TYPEDEF_FOR_float_32_', ... '/* External outputs',1,1);
#ifndef DEFINED_TYPEDEF_FOR_float_32_ #define DEFINED_TYPEDEF_FOR_float_32_ typedef real32_T float_32; #endif
По умолчанию генератор кода также создает псевдоним real32_T
, который соответствует типу данных C float
. Вы видите typedef
оператор в сгенерированном заголовочном файле rtwtypes.h
.
file = fullfile('ex_typedef_ert_rtw','rtwtypes.h'); rtwdemodbtype(file,'typedef float real32_T;', ... 'typedef float real32_T;',1,1);
typedef float real32_T;
Сгенерированный исходный файл ex_typedef.c
использование float_32
задавать глобальную переменную mySig.
file = fullfile('ex_typedef_ert_rtw','ex_typedef.c'); rtwdemodbtype(file,'/* Exported block signals */', ... '/* External outputs',1,1);
/* Exported block signals */ float_32 mySig; /* '<Root>/In1' */