Здравствуйте.
В программе пытаюсь реализовать следующий алгоритм: При включении тумблера ОТКРЫТ загорается индикатор "откр 2". Затем пользователь должен нажать на кнопку ОК либо на кнопку CANCEL. Т.е. идет опрос этих кнопок. При этом остальные элементы ВИ работать не должны, т. е. нужно чтобы пользователь обязательно нажал ОК или CANCEL. Потом пользователь должен выключить тумблер (третий фрейм). В этом же фрейме проверяется выключен ли тумблер. Потом (4й фрейм) опять таки пользователь должен нажать кнопку ОК или CANCEL.
Прилагаю блок-диаграмму того, как я пытаюсь этот алгоритм реализовать. Но это не работает. Когда включаю тумблер, все ок, но кнопки OK или CANCEL после этого не нажимаются. Т. е. программа стопорится на втором фрейме. А мне бы хотелось, чтобы после нажатия OK или CANCEL происходил выход из цикла и переход к след. фрейму и т. д. Подскажите, пожалуйста, что я делаю не так?
Опрос кнопок
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Опрос кнопок
Очень плохая идея использовать while циклы вложенные друг в друга, а уж тем более внутри event структуры.
Наберите в youtube " state machine LabVIEW " думаю для Вашего случая самое то.
Наберите в youtube " state machine LabVIEW " думаю для Вашего случая самое то.
- Вложения
-
- Untitled 1.vi
- Вообщем вот Вам идея...
- (7.74 КБ) 95 скачиваний
-
- professor
- Сообщения: 3396
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Опрос кнопок
как говорится, "примерно всё"
1) в вольном переводе: "если это не должно быть нажато, это не должно выглядеть как кнопка"
если кнопка должна быть недоступна, она ДОЛЖНА быть не доступна
Блокируйте, скрывайте, сделайте так, чтобы кнопка убегала от курсора
2) очень плохая идея использовать PN для чтения значений. Используйте их для блокировки кнопок, а значения, если уж никак, читайте через локальные переменные
3) вот тут незачем сравнивать c F, достаточно поменять режим остановки цикла 4) про цикл в цикле и машину состояний уже сказали
5) и самое главное почему это всё виснет - блокировка UI пока кейс не отработает, интерфейс заблокирован, а кейс не отработает, пока интерфейс заблокирован. Короче, взаимная блокировка.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 02 июл 2020, 10:39
- Версия LabVIEW: 17
- Контактная информация:
-
- professor
- Сообщения: 3396
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Опрос кнопок
по сути он не является дублёром. Вообще, что есть дублёр?
а плох он исключительно производительностью:
http://labviewportal.org/viewtopic.php?p=82639#p82639
локальная переменная дёргает только данные, а PN грузит UI поток, обращаясь именно к интерфейсу, а не к значению в контроле