Машина состояний: взаимодействие While Loop и Case

Обсуждение, связанное с разработкой ПО верхнего уровня
Ответить
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

Машина состояний: взаимодействие While Loop и Case

Сообщение LEO_NIK »

Здравствуйте! Разрабатывая модель радиостанции с использованием МАШИНЫ СОСТОЯНИЙ для разных режимов работы, столкнулся с вопросами. Привожу простой пример, на котором покажу свои вопросы. В примере нужно сделать так, чтобы после нажатия на кнопку ВКЛ на лицевой панели появилось идущее вперёд время и дальше две ситуации: либо регулятор звука в нулевом, либо в каком-то другом положении от предыдущего включения ВП. Если регулятор звука в нулевом положении, то мигает предупредительная надпись и надо регулятор звука (пока самого звука нет, но для вопроса это и не важно) поставить в любое положение (1, 2...). Исчезнет мигающее предупреждение и появится индикация выставленного уровня в виде прямоугольников, пропорционально положению регулятора. Вот на этом надо бы остановиться, но чтобы и время двигалось вперёд и была возможность выставить на лицевой панели любой другой уровень. Это дежурный режим, в котором и уровень звука должен регулироваться с описанным выше условием, и время должно "идти", и чтобы можно было выключить прибор. Как остановить выполнение программы на дежурном режиме? Куда надо отправить программу селектором Case Structure после выполнения в моём примере селектора "Индикатор звука"? На лицевой панели будет ещё несколько кнопок и они должны быть доступны в дежурном режиме для работы, т.е. программа должна отслеживать состояние элементов на лицевой панели. Намеренно делал маленькими фрагменты машины состояний, чтобы быть близко к реальному проекту, где внутри каждых Case содержится фрагмент кода.
И более мелкий вопрос. После первого же положения регулятора звука перестаёт мигать надпись и программа идёт дальше. А как сделать так, чтобы программа выжидала, когда закончится вращение потенциометра (пользователь может вращать регулятор как на увеличение, так и на уменьшение: 2-й, 3-й, ... ЛЮБОЙ уровень) и только потом выходила из этого цикла, отображая соответствующее количество "прямоугольников" установленного уровня. Спасибо.
Вложения
Машина состояний. Взаимодействие Case и While Loop.rar
(23.94 КБ) 196 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Машина состояний: взаимодействие While Loop и Case

Сообщение Artem.spb »

самое банальное - поменять местами case и event.
события-кнопки что-то желают, всё остальное происходит в таймауте, там и будет case по машине состояний.
В нынешней конфигурации система очень опасна. Попробуйте в состоянии "звук" выключить рубильник. Подозреваю, что вы опечалитесь тем фактом, что с программой больше ничего нельзя сделать, потому что она не заблокировала все контролы (точнее, панель управления).
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

Re: Машина состояний: взаимодействие While Loop и Case

Сообщение LEO_NIK »

Artem.spb писал(а):... поменять местами case и event
Спасибо. Проверю. А не автоматом ли появляется очередной case в машине состояний? Это к тому, что можно ли поменять местами case и event? Попробую.
Artem.spb писал(а):... Попробуйте в состоянии "звук" выключить рубильник
Спасибо, учту замечание. Пробовал. Да, система ни на что не реагирует и при повторном нажатии, если не ошибаюсь, весь цикл загрузки повторялся. Отключал RUN. Но я как-то на это не обратил внимания, поскольку кнопку ВКЛ/ВЫКЛ для ВЫКЛ собирался кодировать в самом конце программирования. Она должна выключать радиостанцию при нажатии на неё (если точно, то при отжатии) и удержании в нажатом состоянии не менее 3 сек. А если меньше, то она никак не должна проявлять себя.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Машина состояний: взаимодействие While Loop и Case

Сообщение Blackman »

Пример
Вложения
Simplest SB State Machine.vi
(24.22 КБ) 198 скачиваний
LEO_NIK
user
user
Сообщения: 86
Зарегистрирован: 09 сен 2016, 20:09
Версия LabVIEW: 2013
Контактная информация:

Re: Машина состояний: взаимодействие While Loop и Case

Сообщение LEO_NIK »

Спасибо, Blackman. Запустил программу, просто конфетка! Но пока не нашел, где устанавливаются цвета мигания Sound Volume? Если не ошибаюсь, то желтый/красный - это "по умолчанию"? А если поменять?
Как я понял, мне надо разобраться, как в деталях работает Event Structure. Спасибо ещё раз!
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»