Переходы к разным фрагментам кода
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Переходы к разным фрагментам кода
Здравствуйте! В ходе создания ВП (имитатор радиостанции) появился следующий вопрос. При включении прибора происходят начальные установки регуляторов и кнопок в рабочее состояние. Использую машину состояний. Есть потенциометр, который НЕ ДОЛЖЕН быть выведен в крайнее положение против часовой стрелки. Если он там (а это зависит от того, в каком положении он был до выключения при предыдущем пользовании радиостанцией), то мигает соответствующий индикатор и необходимо его повернуть на некоторый угол, чтобы сигнализатор перестал мигать. Это у меня сделано. После этой операции продолжается процесс начальных установок. После всех начальных установок начинается работа с радиостанцией и этот потенциометр участвует в работе. И если он будет скручен пользователем в то же самое крайнее положение, то опять должен замигать тот же индикатор, чтобы пользователь вновь вывел потенциометр из крайнего положения. А теперь вопрос: то, что делалось при начальной установке параметров оказывается уже не доступно (принцип последовательного выполнения программы в , условно слева направо ), по блок схеме программа далеко "справа". Вращение потенциометра на этом этапе ни к чему не приводит. Как кратковременно вернуть программу к тому фрагменту машины состояний (там и Case, и цикл был), где было выведение регулятора из нерабочего положения, а после устранения вернуться к прерванному коду далеко "справа"? И таких ситуаций, когда нужно вернуться к предыдущим элементам кода, а потом продолжить выполнение какой-то задачи не мало. С уважением, Леонид.
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Переходы к разным фрагментам кода
Сделайте переменную (если ее нет), которая определяет режим работы (Инициализация, Настройка, Работа и т.д. не знаю что у Вас там).LEO_NIK писал(а):Как кратковременно вернуть программу к тому фрагменту машины состояний (там и Case, и цикл был), где было выведение регулятора из нерабочего положения, а после устранения вернуться к прерванному коду далеко "справа"? И таких ситуаций, когда нужно вернуться к предыдущим элементам кода, а потом продолжить выполнение какой-то задачи не мало.
Отдельное состояние SM, которое инициализируется при изменении значения "регулятора".
В процессе работы, если изменяется значение "регулятора", то SM переходит в соответствующее состояние, в котором выполняется проверка режима работы. И если это "Инициализация", то выполняем следующие.... действия.
---------------------
Уже обсуждали на форуме. По моему, чем на меньшие шаги Вы разобьете SM, тем гибче можно управлять ею.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Переходы к разным фрагментам кода
Спасибо за ответ.IvanLis писал(а): Сделайте переменную (если ее нет), которая определяет режим работы (Инициализация, Настройка, Работа и т.д. не знаю что у Вас там).
Уже обсуждали на форуме. По моему, чем на меньшие шаги Вы разобьете SM, тем гибче можно управлять ею.
1. Локальные переменные контролов, индикаторов у меня уже есть. А это какая-то другая переменная? Где найти её создание. В " для всех" она есть? Или где ещё о ней прочитать?
2. По каким ключевым словам найти обсуждение на форуме этого вопроса?
-
ladik
- developer
- Сообщения: 275
- Зарегистрирован: 18 ноя 2014, 11:45
- Награды: 1
- Версия LabVIEW: 2015, 2019
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Переходы к разным фрагментам кода
Вот демка. Можно попробовать соорудить что-то подобное.
- Вложения
-
- Demo.vi
- (12.54 КБ) 82 скачивания
Дорогу осилит идущий.
-
ladik
- developer
- Сообщения: 275
- Зарегистрирован: 18 ноя 2014, 11:45
- Награды: 1
- Версия LabVIEW: 2015, 2019
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Переходы к разным фрагментам кода
Немного упростил. Лишний сдвиговый регистр был. Проверка производится через определённый период времени.
- Вложения
-
- Demo.vi
- (12.65 КБ) 93 скачивания
Дорогу осилит идущий.
-
- user
- Сообщения: 86
- Зарегистрирован: 09 сен 2016, 20:09
- Версия LabVIEW: 2013
- Контактная информация:
Re: Переходы к разным фрагментам кода
ОК! А можно ли сделать постоянную проверку? Или через очень короткие интервалы времени, например, через 1 сек или даже меньше? Но это, видимо, нагрузка на процессор, торможение программы? Насколько это заметно?
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Переходы к разным фрагментам кода
Для генерации событий UI используйте Event Str (http://zone.ni.com/reference/en-XX/help ... n_labview/)LEO_NIK писал(а):ОК! А можно ли сделать постоянную проверку? Или через очень короткие интервалы времени, например, через 1 сек или даже меньше? Но это, видимо, нагрузка на процессор, торможение программы? Насколько это заметно?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение