В этом примере показано, как создать приложение, состоящее из нескольких автономных графиков Stateflow ® и приложения MATLAB ®. Автономные диаграммы моделируют системы управления и объекта для приложения и интерфейса с приложением MATLAB. Для получения дополнительной информации о соединении автономной диаграммы с приложением MATLAB, смотрите Проект Логики интерфейса человека-машины при помощи Для версии этого примера, которая использует диаграммы Stateflow в модели Simulink ®, смотрите Модель Fitness Tracker.
В этом примере приложение MATLAB моделирует фитнес-трекер. Когда вы запускаете приложение, можно настроить настройки для трекера и выбрать действие (Сон, Отдых, Прогулка или Упражнение). Когда вы выбираете Упражнение, можно также задать интенсивность тренировки.
Автономная диаграмма sf_fitness_interface
обеспечивает двунаправленное соединение между приложением MATLAB и другими автономными диаграммами в примере, sf_fitness_human
и sf_fitness_tracker
. Эти графики моделируют симулятор человека и обеспечивают основную логику для фитнес-трекера, соответственно. Когда вы взаимодействуете с виджетами в приложении, sf_fitness_interface
график передает выбранные значения другим графикам в примере. И наоборот, график использует выход фитнес-трекера, чтобы обновить числовое и текстовое поля в приложении.
Эта принципиальная схема иллюстрирует передачу информации между приложением и графиками в примере.
Чтобы запустить пример, запустите sf_fitness_sfx_app
Приложение создает объект графика для sf_fitness_interface
. Этот график, в свою очередь, создает объекты диаграммы для двух других диаграмм в примере. График также создает MATLAB timer
объект, который выполняет весь три графиков с частотой, пропорциональной частоте сердечных сокращений на графике симулятора человека. В то время как пример работает, одна секунда симуляции представляет одну минуту времени упражнения. Чтобы остановить пример, закройте приложение.
График sf_fitness_interface
настроена для связи с приложением MATLAB sf_fitness_sfx_app
.
График использует локальный объект данных app
для взаимодействия с приложением MATLAB. График использует этот локальный объект данных при вызове вспомогательных функций updateStatus
, updateClock
, updateText
, updateSteps
, и updateHeartRate
. В приложении эти вспомогательные функции изменяют содержимое полей состояния действия, часов и счетчика шагов и создают эффекты анимации в пульсирующих и стоповых отображениях. Например, когда появляется новое уведомление от фитнес-трекера, substate MainDisplay
вызывает функцию helper updateText
. Эта функция заменяет содержимое отображения часов настраиваемым уведомлением. После короткой задержки подсостояние вызывает функцию helper updateClock
для восстановления отображения синхроимпульса.
Приложение использует свойство под названием chart
для взаимодействия с графиком. Приложение использует это свойство, чтобы считать локальные данные графики. Для примера помощник выполняет функции updateHeartRate
и updateSteps
считайте локальные данные графика heart_rate
и total_steps
, соответственно. Кроме того, когда вы закрываете приложение, UIFigureCloseRequest
коллбэк использует chart
свойство, чтобы остановить выполнение графиков в примере путем удаления их объектов графика.
Для получения дополнительной информации о том, как создать двунаправленное соединение между приложением MATLAB и автономной диаграммой Stateflow, смотрите Проект Логики интерфейса человек-машина при помощи диаграмм Stateflow.
Чтобы установить связь с симулятором человека и графиками фитнес-трекера, sf_fitness_interface
диаграмма сохраняет их объекты на графике как локальные данные human
и tracker
. Уровень диаграммы Функций MATLAB updateHuman
и updateTracker
используйте эти объекты для записи и чтения из локальных данных в графиках. Для примера, когда вы выбираете новое действие или изменяете интенсивность тренировки в панели Human Simulator приложения, updateHuman
устанавливает значение локальных данных activity
и intensity
в графике симулятора человека. Точно так же, когда вы меняете значение одного из полей на панели Settings приложения, updateTracker
обновляет значение соответствующих локальных данных в графике фитнес-трекера.
Симулятор человека графика sf_fitness_human
моделирует жизненные признаки человека, участвующего в деятельности, выбранной вами в приложении. График хранит эти жизненные признаки (представляющие частоту сердечных сокращений, скорость и количество шагов, которые вы сделали) как локальные переменные, к которым может получить доступ фитнес-трекер. Когда вы выбираете новое действие или корректируете интенсивность вашего тренировки, график вызывает функцию transition
чтобы гарантировать, что эти жизненно важные признаки изменяются постепенно с течением времени. Чтобы обнаружить изменения в активности или интенсивности упражнений, график вызывает hasChanged
оператор. Для получения дополнительной информации смотрите Обнаружение изменений в значениях данных.
График sf_fitness_tracker
моделирует базовую логику фитнес-трекера. График состоит из четырёх субдиаграмм, которые соответствуют возможным действиям. График регистрирует ваш статус активности на основе частоты сердечных сокращений и скорости, произведенных диаграммой симулятора человека, и переходов между этими субдиаграммами. Чтобы отфильтровать шум сигнала, график использует count
оператор для реализации простой логики демпфирования. Например, когда вы находитесь в покое, можно сделать некоторые быстрые и внезапные движения, которые не соответствуют упражнениям. График определяет, что вы идете или выполняете только, если ваше движение длится больше двух вычислений объекта диаграммы.
График использует другие временные логические операторы, чтобы отслеживать количество времени, которое вы проводите в каждом действии и определять, когда отправлять уведомления в приложение:
Действия выхода в каждой субдиаграмме вызывают elapsed
оператор, чтобы определить, как долго субдиаграмма был активная.
На графике используются after
оператор, чтобы определить, когда вы спите или ходите дольше пяти минут, отдыхаете или упражняетесь дольше, чем порог, указанный вами в приложении, или упражняетесь с высокой интенсивностью (делая более 4 шагов в секунду) в течение более 15 минут. В каждом из этих случаев график обновляет значение локальных данных notification
. The sf_fitness_interface
график считывает это значение и приводит к появлению уведомления на главном отображении приложения. В зависимости от типа уведомления кнопка уведомления изменяет цвет.
count | elapsed | hasChanged