В этом примере показано, как создать интерфейс между графиком Stateflow® и приложение MATLAB®, созданное в App Designer. Для других примеров, которые показывают, как соединить диаграмму Stateflow с приложением MATLAB, см. Модель Контроллер Окна со стеклоподъемником и Симулируйте Медиаплеер. Для версии этого примера, который использует автономные диаграммы в MATLAB, см. Модель Приложение Фитнеса при помощи Автономных диаграмм.
В этом примере приложение MATLAB моделирует средство отслеживания фитнеса. В процессе моделирования можно настроить настройки для средства отслеживания и выбрать действие (Сон, Отдых, Обход или Осуществление). Когда вы выбираете Exercise, можно также установить интенсивность тренировки.
Диаграмма Stateflow App Interface
обеспечивает двунаправленную связь между приложением MATLAB и управлением и системами объекта в модели Simulink®. Когда вы взаимодействуете с виджетами в приложении, график передает ваши выборы к другим графикам в модели. С другой стороны график использует выход средства отслеживания фитнеса, чтобы обновить числовые и текстовые поля в приложении. Например, когда вы кликаете по остальным кнопка на приложении, App Interface
график устанавливает значение выхода activity
к перечисляемому значению Activity.Rest
. Human Simulator
график отвечает путем создания значений основного показателя жизнедеятельности, которые моделируют человека в покое. Fitness Tracker
анализы диаграммы эти значения и наборы выходной сигнал status
к Activity.Rest
. App Interface
график контролирует этот сигнал и обновляет содержимое поля Status в приложении к Rest
.
Чтобы запустить пример, откройте модель Simulink и нажмите Run. График App Interface
открывает приложение и инициализирует Human Simulator
и Fitness Tracker
графики. В то время как пример запускается, одна секунда симуляции представляет одну минуту времени осуществления. Чтобы остановить симуляцию, нажмите Stop или закройте приложение.
График App Interface
сконфигурирован, чтобы передать с приложением MATLAB sf_fitness_app
.
Приложение использует свойство под названием chart
соединять интерфейсом с графиком с App Interface
. Коллбэки приложения используют это свойство считать входные параметры графика и запись к графику выходные параметры. Например, когда вы изменяете значение одного из полей в панели Настроек, коллбэк обновляет значение соответствующего поля структуры output threshold
. Точно так же, когда вы выбираете новое действие или меняете интенсивность вашей тренировки в Человеческой панели Средства моделирования, коллбэк устанавливает значение графика выходные параметры activity
и intensity
. Наконец, когда вы закрываете приложение, UIFigureCloseRequest
коллбэк устанавливает значение графика выход stop
к true
.
В графике, действиях входа в InterfaceWithApp
государственный приложение sf_fitness_app
и сохраните возвращенное значение как локальный объект данных app
. График использует этот локальный объект данных, когда это вызывает функции помощника updateStatus
, updateClock
Обновление текста
, updateSteps
, и updateHeartRate
. В приложении эти функции помощника изменяют содержимое состояния действия, часов и полей счетчика шага, и создают эффекты анимации в отображениях шага и heartbeat. Например, когда график получает notification
обменивайтесь сообщениями, MainDisplay
подсостояния вызывает функцию помощника
updateText
. Эта функция заменяет содержимое отображения часов с индивидуально настраиваемым уведомлением. После пяти секунд подсостояние вызывает функцию помощника updateClock
восстановить отображение часов.
Для получения дополнительной информации о том, как создать двунаправленную связь между вашим приложением MATLAB и диаграммой Stateflow, см. Модель Контроллер Окна со стеклоподъемником и Симулируйте Медиаплеер.
Функции, используемые, чтобы взаимодействовать с приложением, не поддерживаются для генерации кода, таким образом, InterfaceWithApp
утвердите первые вызовы coder.extrinsic
функция, чтобы объявить их как внешний код MATLAB. Для получения дополнительной информации смотрите функции MATLAB Значения внешних параметров Вызова в диаграммах Stateflow.
Human Simulator
график моделирует основные показатели жизнедеятельности человека, занятого действием, которое вы выбираете в приложении. График использует структуру output vitals
передавать эти основные показатели жизнедеятельности к средству отслеживания фитнеса. Поля структуры представляют ваш сердечный ритм, скорость и количество шагов, которые вы сделали. Когда вы выбираете новое действие или настраиваете интенсивность вашей тренировки, график вызывает функциональный transition
гарантировать, что эти основные показатели жизнедеятельности изменяются постепенно в зависимости от времени. Чтобы обнаружить изменения в интенсивности действия или осуществления, график вызывает hasChanged
оператор. Для получения дополнительной информации смотрите, Обнаруживают Изменения в Значениях данных.
График Fitness Tracker
моделирует логику ядра средства отслеживания фитнеса. График состоит из четырех субдиаграмм, которые соответствуют возможным действиям. График указывает ваше состояние действия на основе сердечного ритма и скорости, произведенной Human Simulator
график и переходы между этими субдиаграммами. Чтобы отфильтровать шум сигнала, график использует duration
оператор, чтобы реализовать простую debouncing логику. Например, когда вы в покое, можно сделать некоторые быстрые и внезапные перемещения, которые не соответствуют осуществлению. График решает, что вы идете или тренируетесь, только если ваше движение длится дольше, чем две минуты (или две секунды времени симуляции). График контролирует активное дочернее состояние и передает эту информацию App Interface
стройте диаграмму через выходные данные status
. Для получения дополнительной информации смотрите Действие Состояния монитора Через Активные Данные состояния.
График использует другие временные логические операторы, чтобы отследить количество времени, которое вы проводите в каждом действии и определяете, когда отправить уведомления приложению:
Выходные действия в каждой субдиаграмме вызывают elapsed
оператор, чтобы определить, сколько времени субдиаграмма была активна. График передает это значение, наряду с другой информацией, такой как ваш сердечный ритм и ваше общее количество шагов, к App Interface
стройте диаграмму через структуру output display
.
График использует after
оператор, чтобы определить, когда вы спите или идете для дольше, чем пять минут, отдых или осуществление для дольше, чем порог, вы задаете в приложении или осуществлении в высокой интенсивности (делающий больше чем 4 шага в секунду) для дольше, чем 15 минут. В каждом из этих случаев график отправляет Notification
сообщение. App Interface
график получает это сообщение и заставляет уведомление появляться в основном отображении приложения. В зависимости от типа уведомления кнопка уведомления изменяет цвет.
after | duration | elapsed | hasChanged | coder.extrinsic
(MATLAB Coder) | Stop Simulation (Simulink)