Здравствуйте! Разрабатывая модель радиостанции с использованием МАШИНЫ СОСТОЯНИЙ для разных режимов работы, столкнулся с вопросами. Привожу простой пример, на котором покажу свои вопросы. В примере нужно сделать так, чтобы после нажатия на кнопку ВКЛ на лицевой панели появилось идущее вперёд время и дальше две ситуации: либо регулятор звука в нулевом, либо в каком-то другом положении от предыдущего включения ВП. Если регулятор звука в нулевом положении, то мигает предупредительная надпись и надо регулятор звука (пока самого звука нет, но для вопроса это и не важно) поставить в любое положение (1, 2...). Исчезнет мигающее предупреждение и появится индикация выставленного уровня в виде прямоугольников, пропорционально положению регулятора. Вот на этом надо бы остановиться, но чтобы и время двигалось вперёд и была возможность выставить на лицевой панели любой другой уровень. Это дежурный режим, в котором и уровень звука должен регулироваться с описанным выше условием, и время должно "идти", и чтобы можно было выключить прибор. Как остановить выполнение программы на дежурном режиме? Куда надо отправить программу селектором Case Structure после выполнения в моём примере селектора "Индикатор звука"? На лицевой панели будет ещё несколько кнопок и они должны быть доступны в дежурном режиме для работы, т.е. программа должна отслеживать состояние элементов на лицевой панели. Намеренно делал маленькими фрагменты машины состояний, чтобы быть близко к реальному проекту, где внутри каждых Case содержится фрагмент кода.
И более мелкий вопрос. После первого же положения регулятора звука перестаёт мигать надпись и программа идёт дальше. А как сделать так, чтобы программа выжидала, когда закончится вращение потенциометра (пользователь может вращать регулятор как на увеличение, так и на уменьшение: 2-й, 3-й, ... ЛЮБОЙ уровень) и только потом выходила из этого цикла, отображая соответствующее количество "прямоугольников" установленного уровня. Спасибо.
Машина состояний: взаимодействие While Loop и Case
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Машина состояний: взаимодействие While Loop и Case
- Вложения
-
- Машина состояний. Взаимодействие Case и While Loop.rar
- (23.94 КБ) 198 скачиваний
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Машина состояний: взаимодействие While Loop и Case
самое банальное - поменять местами case и event.
события-кнопки что-то желают, всё остальное происходит в таймауте, там и будет case по машине состояний.
В нынешней конфигурации система очень опасна. Попробуйте в состоянии "звук" выключить рубильник. Подозреваю, что вы опечалитесь тем фактом, что с программой больше ничего нельзя сделать, потому что она не заблокировала все контролы (точнее, панель управления).
события-кнопки что-то желают, всё остальное происходит в таймауте, там и будет case по машине состояний.
В нынешней конфигурации система очень опасна. Попробуйте в состоянии "звук" выключить рубильник. Подозреваю, что вы опечалитесь тем фактом, что с программой больше ничего нельзя сделать, потому что она не заблокировала все контролы (точнее, панель управления).
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Машина состояний: взаимодействие While Loop и Case
Спасибо. Проверю. А не автоматом ли появляется очередной case в машине состояний? Это к тому, что можно ли поменять местами case и event? Попробую.Artem.spb писал(а):... поменять местами case и event
Спасибо, учту замечание. Пробовал. Да, система ни на что не реагирует и при повторном нажатии, если не ошибаюсь, весь цикл загрузки повторялся. Отключал RUN. Но я как-то на это не обратил внимания, поскольку кнопку ВКЛ/ВЫКЛ для ВЫКЛ собирался кодировать в самом конце программирования. Она должна выключать радиостанцию при нажатии на неё (если точно, то при отжатии) и удержании в нажатом состоянии не менее 3 сек. А если меньше, то она никак не должна проявлять себя.Artem.spb писал(а):... Попробуйте в состоянии "звук" выключить рубильник
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Машина состояний: взаимодействие While Loop и Case
Пример
- Вложения
-
- Simplest SB State Machine.vi
- (24.22 КБ) 200 скачиваний
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Машина состояний: взаимодействие While Loop и Case
Спасибо, Blackman. Запустил программу, просто конфетка! Но пока не нашел, где устанавливаются цвета мигания Sound Volume? Если не ошибаюсь, то желтый/красный - это "по умолчанию"? А если поменять?
Как я понял, мне надо разобраться, как в деталях работает Event Structure. Спасибо ещё раз!
Как я понял, мне надо разобраться, как в деталях работает Event Structure. Спасибо ещё раз!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 484 Просмотры
-
Последнее сообщение Zloydj