Последовательный вызов vi

Простейшие вопросы в области инженерной разработки
Ответить
K0sinus
user
user
Сообщения: 70
Зарегистрирован: 22 ноя 2017, 10:29
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Поблагодарили: 2 раза
Контактная информация:

Последовательный вызов vi

Сообщение K0sinus »

Есть тема http://labviewportal.org/viewtopic.php?f=21&t=4732, но я почему-то не могу писать в ней (закрыта?). Возможно в ней был ответ, но сейчас он не отображается.
У меня тоже возник похожий вопрос: есть куча подпрограмм, которые хочу вызывать не друг из друга (одна внутри другой), а из одного, "главного" vi. Как это осуществить оптимальным образом? Используя VI Server?

Дело в том, что при работе главного subVI хочу сделать возможность открывать другие subVI, не нарушая работу главного. Но известный мне вызов subVI мне не подходит.

Прошу показать на примере.

Примерный алгоритм работы интерфейса программы:
1. Окно авторизации (admin/user) с двумя кнопками ok, отмена.
При нажатии на ОК:
Если admin, то
1,5. Окно настройки для админа. Затем 2.
Если user, то сразу 2
2. Окно выбора конфигурации оборудования с кнопками ок и отмена
Если отмена, то выход. Если ок, то 3
3. Окно задания параметров. Кнопки ок, отмена - в любом случае открывают 4 (но с разными значениями)
4. Главное окно, из которого можно снова вызвать 3.

Также важно передавать из одних subVI данные в другие.
Artem.spb

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

Re: Последовательный вызов vi

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

А в чём проблема использовать subVI?
Если не нужно плодить окна и subVI заранее известны, то нет никаких сложностей в вызове.
Передача данных последовательно через проводники.
Если хочется прям «извращаться», то VI-server.
Но описанная последовательность – простейшая машина состояний (state machine), совершенно не требующая этих извращений.
Если нужны примеры, присылайте свои заготовки.
K0sinus
user
user
Сообщения: 70
Зарегистрирован: 22 ноя 2017, 10:29
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Поблагодарили: 2 раза
Контактная информация:

Re: Последовательный вызов vi

Сообщение K0sinus »

Запускаем password.vi
При нажатии ок открывается новый vi, при отмене закрывается. Его надо закрывать и про ок. Как это сделать?
Если тип уч. записи admin, открывается set_defaults.vi
При ок и отмене его тоже надо закрывать.
далее открывается Select_lines (если был введен user он откроется сразу)
надо включить ээс ршо 1 и нажать ок. Окно тоже должно закрываться
Data_input
При ок и отмене вызывается Main_panel.
Тоже надо закрывать. Теперь самое интересное, из main_panel по кнопке надо снова вызывать data_input
Artem.spb

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

Re: Последовательный вызов vi

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

> При нажатии ок открывается новый vi, при отмене закрывается. Его надо закрывать и про ок. Как это сделать?
двойное условие завершения цикла. В чём сложности?
окно открыть/закрыть два варианта
1) настройки VI, см вложение
2) по subVI правой -> subVI node setup -> те же пункты что и в первом варианте.

> Если тип уч. записи admin, открывается set_defaults.vi
кейс по типу учётки

> Data_input
> При ок и отмене вызывается Main_panel.
> Тоже надо закрывать. Теперь самое интересное, из main_panel по кнопке надо снова вызывать data_input
Data_input сначала вызывается в "главной" функции, которая вызывает всех, а потом из main_panel, ничто этому не мешает. subVI можно вызывать много раз из разных мест, независимо от степени вложенности.
Можно даже рекурсивно, для этого реентрантность нужно включить.
Вложения
setting1.PNG
setting1.PNG (37.99 КБ) 3084 просмотра
K0sinus
user
user
Сообщения: 70
Зарегистрирован: 22 ноя 2017, 10:29
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Поблагодарили: 2 раза
Контактная информация:

Re: Последовательный вызов vi

Сообщение K0sinus »

Это все мне известно (кроме рекурсивного запуска). Я пытаюсь прикрепить проект, не получается. Пардоньте за неопытность.
Вложения
help.rar
(726.31 КБ) 88 скачиваний
Artem.spb

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

Re: Последовательный вызов vi

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

> Это все мне известно (кроме рекурсивного запуска). Я пытаюсь прикрепить проект, не получается. Пардоньте за неопытность.
если всё известно. то я не понимаю сути вопроса.
что конкретно не получается?
в "проекте" проекта нет, есть только отдельные VI. их нужно правильно "упаковать"
K0sinus
user
user
Сообщения: 70
Зарегистрирован: 22 ноя 2017, 10:29
Версия LabVIEW: 2019
Откуда: Санкт-Петербург
Поблагодарили: 2 раза
Контактная информация:

Re: Последовательный вызов vi

Сообщение K0sinus »

В данном случае важен именно проект? Не пойму, зачем.
Как именно "упаковать"? В этом и заключается вопрос. В моем вложении окна не закрываются при вызове новых. Также, у меня один vi вызывается из другого, из него ещё один, и т.д. а можно ли сделать одну, главную программу, в которой реализован этот алгоритм запуска?
Artem.spb

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

Re: Последовательный вызов vi

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

> а можно ли сделать одну, главную программу, в которой реализован этот алгоритм запуска?
не можно, а нужно. Именно в "главном" vi и должна быть реализованна машина состояний.
Ответить

Вернуться в «Для чайников»