Этот пример моделирует медиаплеер при помощи данных о строке в двух графиках языка действия Stateflow® C. Модель проигрывает клип музыки и других записанных заранее звуков. Во время симуляции графики используют строки, чтобы управлять поведением медиаплеера и обеспечить выходные сигналы естественного языка.
1. Моделируйте модель. Помощник Медиаплеера появляется.
В модели блоки Отображения показывают настройки по умолчанию медиаплеера:
CurrentRadioMode
: "Standby (OFF)"
MechCmd
: "STOP"
CdStatus
: "EMPTY"
AlbumName
: "None"
2. В разделе Radio Request нажмите CD.
Блок String Constant RR
изменяется от "OFF"
до "CD"
.
Блок Display для CurrentRadioMode
изменяется от "Standby (OFF)"
до "CD Player"
.
3. Нажмите Insert Disc.
Блок Display для AlbumName
изменяется от "None"
до "Handel's Greatest Hits"
.
Блок Display для CdStatus
изменяется от "EMPTY"
до "Reading: Handel's Greatest Hits"
к "Stopped"
.
4. В разделе CD Request нажмите PLAY.
Блок String Constant CR
и блок Display для MechCmd
изменяется от "STOP"
до "PLAY"
.
Блок Display для CdStatus
изменяется от "Stopped"
до "Playing: Handel's Greatest Hits"
.
Музыка начинает играть.
5. В разделе CD Request нажмите FF.
Музыкальные остановки и щебечущие звуки начинаются.
Блок String Constant CR
и блок Display для MechCmd
изменяется от "PLAY"
до "FF"
.
Блок Display для CdStatus
изменяется от "Playing: Handel's Greatest Hits"
до "Forward >> Handel's Greatest Hits"
. Название альбома в этом сообщении прокручивает вперед через отображение.
Чтобы видеть другие изменения в блоках Отображения, используйте Помощника Медиаплеера, чтобы выбрать другие рабочие режимы или ввести различное название альбома.
Этот график активирует соответствующий субкомпонент медиаплеера (радио AM, радио FM или проигрыватель компакт-дисков) в зависимости от входных параметров, полученных от Помощника Медиаплеера.
Ключевые возможности
Представьте данные в виде строки RadioReq
, CdReq
и поведение диаграммы управления MechCmd
.
Представьте данные в виде строки, CurrentRadioMode
предоставляет естественному языку вывод.
Операторы strcpy
и =
присваивают значения, чтобы представить данные в виде строки.
Операторы strcmp
и ==
сравнивают значения данных о строке.
Оператор hasChanged
обнаруживает изменения в значении RadioReq
.
Стройте диаграмму поведения
В начале симуляции состояние NormalOperation
становится активным. Если булевы данные, DiscEject
является 1
(или true
), переход к состоянию Eject
, происходят, сопровождаемые переходом назад к состоянию NormalOperation
.
Когда NormalOperation
активен, ранее активное подсостояние (Standby
или ON
), как зарегистрировано соединением истории становится активным. Последующие переходы между Standby
и подсостояниями ON
зависят от значения выражения strcmp(RadioReq,"OFF")
:
Если strcmp
возвращает значение нуля, то RadioReq
является "OFF"
, и подсостояние Standby
активируется.
Если strcmp
возвращает ненулевое значение, то RadioReq
не является "OFF", и подсостояние ON
активируется.
В подсостоянии ON
три подсостояния представляют рабочие режимы медиаплеера: Проигрыватель компакт-дисков, радио AM и радио FM. Каждое подсостояние соответствует различному значению данных о строке RadioReq
. Внутренний переход в состоянии ON
постоянно сканирует для изменений в значении RadioReq
.
Если значением RadioReq
является "CD"
, то CDMode
подсостояния становится активным, устанавливая медиаплеер на режим проигрывателя компакт-дисков. ModeManager строят диаграмму выходных параметров "PLAY"
, "REW"
, "FF"
и команд "STOP"
к графику CdPlayer через данные о строке MechCmd
.
Если значением RadioReq
является "AM"
, то AMMode
подсостояния становится активным, устанавливая медиаплеер на режим радио AM. ModeManager строят диаграмму выходных параметров команда "STOP"
к графику CdPlayer через данные о строке MechCmd
.
Если значением RadioReq
является "FM"
, то FMMode
подсостояния становится активным, устанавливая медиаплеер на режим радио FM. ModeManager строят диаграмму выходных параметров команда "STOP"
к графику CdPlayer через данные о строке MechCmd
.
Этот график активирует соответствующий рабочий режим для проигрывателя компакт-дисков в зависимости от входа, полученного от графика ModeManager.
Ключевые возможности
Представьте данные в виде строки поведение графика средств управления Cmd
.
Представьте данные в виде строки NewAlbum
, AlbumName
, и CdStatus
предоставляет естественному языку вывод.
Операторы =
и ==
присваивают и сравнивают значения данных о строке.
Операторы strcat
, strlen
и substr
производят текст в выводимой строке CdStatus
.
Временный логический оператор after
управляет синхронизацией переходов во время вставки диска и извлечения.
Оператор пространства имен доступы ml
MATLAB® play
и stop
функционирует, чтобы управлять музыкой и звуками.
Стройте диаграмму поведения
В начале симуляции активируется состояние Empty
.
Если булевы данные, DiscInsert
является 1
(или true
), переход к состоянию Inserting
, происходят. После кратковременной задержки происходит переход к состоянию DiscPresent
.
Состояние DiscPresent
остается активным до данных, CMD
становится "EJECT"
. В той точке происходит переход к состоянию Ejecting
. После кратковременной задержки происходит переход к состоянию Empty
.
Каждый раз, когда изменение состояния происходит, действие записи в новых изменениях состояния значение CdStatus
, чтобы отразить состояние проигрывателя компакт-дисков. В FF
или подсостояниях REW
, во время действий постоянно изменяют значение CdStatus
, чтобы произвести эффект движения прокрутки.
Когда активным состоянием является Empty
, значением CdStatus
является "EMPTY"
.
Когда активным состоянием является Inserting
, значением CdStatus
является "Reading: AlbumName"
.
Когда активным состоянием является Ejecting
, значением CdStatus
является "Ejecting: AlbumName"
.
Когда активным состоянием является DiscPresent.STOP
, значением CdStatus
является "Stopped"
.
Когда активным состоянием является DiscPresent.PLAY
, значением CdStatus
является "Playing: AlbumName"
.
Когда активным состоянием является DiscPresent.REW
, значением CdStatus
является "Reverse << AlbumName"
, где AlbumName
прокручивает назад через отображение.
Когда активным состоянием является DiscPresent.FF
, значением CdStatus
является "Forward >> AlbumName"
, где AlbumName
прокручивает вперед через отображение.
после | strcat | strcmp | strcpy | strlen | substr