Сконфигурируйте интерфейс класса C++ для моделей экспорта функций

В этом примере показано, как сконфигурировать интерфейс класса 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++.

Смотрите также

|

Похожие темы