Спроектируйте логику человеко-машинного интерфейса при помощи диаграмм Stateflow

В этом примере показано, как смоделировать логику графического интерфейса пользователя в автономной диаграмме Stateflow®. Автономные диаграммы реализуют классическую семантику графика с MATLAB® как язык действия. Можно программировать график при помощи полной функциональности MATLAB, включая те функции, которые ограничиваются для генерации кода в Simulink®. Для получения дополнительной информации смотрите, Создают диаграммы Stateflow для Выполнения как объекты MATLAB.

Можно выполнить автономную диаграмму Stateflow путем вызова ее входных событий и использования темпоральных операторов. Событие - и управляемый таймером рабочий процесс выполнения подходит для разработки логики, лежащей в основе человеко-машинных интерфейсов (HMIs) и графических интерфейсов пользователя (UIs).

  • Когда вы используете App Designer MATLAB, функции обратного вызова от интерфейсных виджетов вызывают события в графике.

  • В диаграмме Stateflow темпоральные операторы и локальные данные управляют свойствами пользовательского интерфейса.

Для получения дополнительной информации о том, как использовать MATLAB, чтобы создать графические интерфейсы пользователя, видеть, Разрабатывают Приложения Используя App Designer.

Управляйте пользовательским интерфейсом App Designer

Этот пользовательский интерфейс содержит переключатель On-Off, который управляет лампой. Когда переключатель находится в На положении, лампа освещает в одном из двух режимов, тела или мигающий, в зависимости от положения переключателя Mode. Вы управляете уровнем мигания путем перемещения ползунка Частоты мигания.

Файл sf_lamp_logic.sfx задает автономную диаграмму Stateflow, которая реализует логику для пользовательского интерфейса. График ввел события (ONoff, BLINKING, и SOLID) и локальные данные (delay и app). Действия в управлении графиком, какие виджеты доступны от каждого состояния. Например, действия в Off утвердите вызывают виджет Лампы, переключатели Mode, и ползунок Частоты мигания в пользовательском интерфейсе, чтобы появиться потускнел.

В On состояние, подсостояния Solid и Blinking обозначьте эти два режима работы. Чтобы реализовать мигающую лампу, график использует временный логический оператор after. Когда график вводит Blinking.Off состояния, выражение after(delay,sec) на исходящем переходе создает объект - таймер MATLAB, который выполняет график после многих секунд. График затем переходы к Blinking.On состояния и создает другой объект - таймер инициировать переход назад к Blinking.Off. В то время как график постоянно переходит между двумя состояниями, можно настроить, уровень мигания путем изменения значения локальных данных задерживаются или переход из мигающего режима путем вызова входных событий SOLID или OFF.

Соединение истории в On утвердите информацию о консервах о последний раз активном подсостоянии так, чтобы пользовательский интерфейс возвратился к предыдущему режиму работы, когда вы включаете лампу.

Выполните автономную диаграмму при помощи Событий

Можно выполнить автономную диаграмму путем вызывания ее входных функций события в командном окне MATLAB. Редактор Stateflow показывает эффекты каждой из этих команд путем выделения активных состояний и переходов посредством анимации графика.

1. Откройте автономную диаграмму в редакторе Stateflow.

edit sf_lamp_logic.sfx

2. Создайте объект диаграммы L и инициализируйте значение delay к 0,5. Это значение соответствует мигающему уровню одной флэш-памяти в секунду.

L = sf_lamp_logic('delay',0.5);

3. Включите лампу.

ON(L)

4. Переключитесь на мигающий режим.

BLINKING(L)

5. Установите значение delay к 0,25. Это значение соответствует мигающему уровню двух вспышек в секунду.

L.delay = 0.25;

6. Переключитесь на твердый режим.

SOLID(L)

7. Выключите лампу.

OFF(L)

8. Удалите объект диаграммы L от рабочего пространства MATLAB.

delete(L)

Соедините автономную диаграмму с пользовательским интерфейсом

Чтобы установить двунаправленную связь между пользовательским интерфейсом и автономной диаграммой Stateflow, откройте окно App Designer и выберите Code View.

1. В окне App Designer создайте частную собственность lampLogic сохранить указатель на объект диаграммы Stateflow.

properties (Access = private)
    lampLogic
end

2. Создайте StartupFcn функция обратного вызова, которая создает объект диаграммы и устанавливает его локальные данные app к указателю пользовательского интерфейса. Присвойте указатель объекта диаграммы на lampLogic частная собственность.

% Code that executes after component creation
function StartupFcn(app)
    app.lampLogic = sf_lamp_logic('delay',0.5,'app',app);
end

3. Создайте CloseRequestFcn функция обратного вызова, которая удаляет объект диаграммы, когда вы закрываете пользовательский интерфейс.

% Close request function: UIFigure
function UIFigureCloseRequest(app, event)
    delete(app.lampLogic);
    delete(app);
end

4. Для каждого из виджетов пользовательского интерфейса добавьте функцию обратного вызова, которая вызывает соответствующее событие на автономную диаграмму.

  • ValueChangedFcn функция обратного вызова для виджета Переключателя:

function SwitchValueChanged(app,event)
    value = app.Switch.Value;
    switch lower(value)
        case 'off'
            OFF(app.lampLogic);
        case 'on'
            ON(app.lampLogic);
    end
end
  • SelectionChangedFcn функция обратного вызова для виджета Кнопки Режима:

function ModeButtonGroupSelectionChanged(app,event)
    selectedButton = app.ModeButtonGroup.SelectedObject;
    if app.SolidButton == selectedButton
        SOLID(app.lampLogic);
    else
        BLINKING(app.lampLogic);
    end
end
  • ValueChangedFcn функция обратного вызова для виджета Ползунка Частоты мигания:

function BlinkRateSliderValueChanged(app,event)
    app.lampLogic.delay = round(0.5/app.BlinkRateSlider.Value,2);
end

Когда вы запускаете пользовательский интерфейс, можно наблюдать эффекты корректировки виджетов управления на холсте графика и на виджете лампы.

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

Похожие темы