В этом примере показано, как сконфигурировать интерфейс класса C++ для модели экспорта функций. Моделирование экспорта функций позволяет вам сгенерировать код для инициированных событием функций, которые могут быть интегрированы с внешней средой или планировщиком. Функции заданы с помощью Подсистемы вызова функций, Модели вызова функции, Функции Simulink и Блоков s-function. Этот пример показывает вам, как настроить сгенерированное имя класса, пространство имен, члены класса и методы класса для модели в качестве примера. Этот пример, rtwdemo_cppclass_expfcn
, обеспечивает набор функций, которые вы можете настроить в типичной модели экспорта функций.
Первичная цель по конфигурированию сгенерированного Кода С++ из модели экспорта функций состоит в том, чтобы смочь настроить событийно-управляемое поведение. В данном примере цель состоит в том, чтобы обновить имя и пространство имен класса к большему количеству значимых значений, настроить экспорты функций, и упростить и инкапсулировать остающиеся данные и функции в интерфейсе.
Чтобы лучше отразить событийно-управляемое поведение в модели, обновите имя класса к triggered_events
.
Чтобы предотвратить столкновения с другими символами в проекте и указать, что сгенерированный код от Simulink, обновите пространство имен класса к sl
.
Чтобы упростить и инкапсулировать данные, установите элементы модели на частный с тем, чтобы получать/методом установки.
Чтобы настроить функции, настройте имена экспортов функций.
Сделать другую точку входа называет более значимым, обновите имена инициализирования и отключите методы точки входа.
Сконфигурируйте имя класса модели и пространство имен
1. На вкладке C ++ Code нажмите Code Interface и выберите Class Name & Namespace.
2. Чтобы сконфигурировать имя класса, в Поле имени Класса C++, обновляют имя к triggered_events
.
3. Чтобы сконфигурировать пространство имен класса, в поле C ++ Class Namespace, обновляют имя к sl
.
4. Нажать ОК.
Сконфигурируйте элементы данных модели как члены класса
1. Откройте редактор Отображений Кода. На вкладке C ++ Code нажмите Code Interface и выберите Code Mappings.
2. Сконфигурируйте видимость данных. Для категорий элемента модели:
Установите Инпортов и выходные порты к private
и Method
.
Установите Параметры модели на private
и Method
.
Установите аргументы Параметра модели на private
и Method
.
Установите Сигналы, состояния и внутренние данные к private
и Method
.
Сконфигурируйте функции модели как методы класса
1. Откройте панель Функций. В редакторе Отображений Кода кликните по вкладке Functions.
2. Сконфигурируйте имена экспорта функций.
Для экспорта функций, Export Function: event 1
, из столбца Имени метода кликните и отредактируйте электронную таблицу, чтобы обновить имя к subsystemEvent1
.
Для экспорта функций, Export Function: event 2
, из столбца Имени метода кликните и отредактируйте электронную таблицу, чтобы обновить имя к subsystemEvent2
.
3. Сконфигурируйте Инициализировать имя функции. В столбце Имени метода кликните и отредактируйте электронную таблицу, чтобы изменить название на initIntegrator
.
4. Сконфигурируйте Оконечное имя функции. В столбце Имени метода кликните и отредактируйте электронную таблицу, чтобы изменить название на terminateReadIntegrator
.
5. Проверьте прототипы метода для всех функций точки входа в столбце Предварительного просмотра Метода.
Сгенерируйте интерфейс
1. Сгенерируйте код. Чтобы сгенерировать интерфейс класса C++, на вкладке C ++ Code, нажимают Build.
2. Просмотрите код. Чтобы просмотреть сгенерированный код, на вкладке, нажимают View Code. Сгенерированный код появляется около модели в рабочем пространстве модели.
Чтобы программно сконфигурировать класс C++ взаимодействуют через интерфейс для rtwdemo_cppclass_expfcn
модель, используйте этот рабочий процесс:
model ='rtwdemo_cppclass_expfcn';
open_system(model);
% Get the C++ mapping object
cm = coder.mapping.api.get(model);
% Configure the C++ class name setClassName(cm,'event_triggered'); % Configure the enclosing namespace setClassNamespace(cm,'sl');
% Configure the inports and outports for the model setData(cm, 'Inports', 'DataVisibility', 'private'); setData(cm, 'Outports', 'DataVisibility', 'private'); setData(cm, 'Inports', 'MemberAccessMethod', 'Method'); setData(cm, 'Outports', 'MemberAccessMethod', 'Method'); % Configure the model parameters % static model parameters (shared across all instances) setData(cm, 'ModelParameters','DataVisibility','private'); setData(cm,'ModelParameters', 'MemberAccessMethod','Method'); % Configure the model parameter agruments setData(cm, 'ModelParameterArguments', 'DataVisibility', 'private'); setData(cm, 'ModelParameterArguments', 'MemberAccessMethod', 'Method'); % Configure the internal data setData(cm, 'InternalData', 'DataVisibility', 'private'); setData(cm, 'InternalData', 'MemberAccessMethod', 'Method');
% To configure the export functions, use the find function to % retrieve all the export functions for the model exported_functions = find(cm, 'ExportedFunctions'); % Configure the Exported Function names setFunction(cm, exported_functions{1}, 'MethodName', 'subsystemEvent1'); setFunction(cm, exported_functions{2}, 'MethodName', 'subsystemEvent2'); % Configure the initialize and terminate function names setFunction(cm,'Initialize','MethodName', 'initIntegrator'); setFunction(cm,'Terminate', 'MethodName', 'terminateReadIntegrator');
Создайте прикладную модель, чтобы сгенерировать интерфейс класса C++.
Отображения кода - редактор C++ | coder.mapping.api.CodeMappingCPP