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