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

Простейшие вопросы в области инженерной разработки

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

Postby K0sinus on 22 Jan 2018, 10:47

Есть тема 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 данные в другие.
K0sinus
beginner
beginner
 
Posts: 43
Joined: 22 Nov 2017, 10:29
Location: Санкт-Петербург
LabVIEW Version: 2014
Karma: 0

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

Postby Artem.spb on 22 Jan 2018, 13:00

А в чём проблема использовать subVI?
Если не нужно плодить окна и subVI заранее известны, то нет никаких сложностей в вызове.
Передача данных последовательно через проводники.
Если хочется прям «извращаться», то VI-server.
Но описанная последовательность – простейшая машина состояний (state machine), совершенно не требующая этих извращений.
Если нужны примеры, присылайте свои заготовки.
Artem.spb
expert
expert
 
Posts: 1330
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 235
CLD hardware I/O VIP freelance

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

Postby K0sinus on 22 Jan 2018, 14:35

Запускаем password.vi
При нажатии ок открывается новый vi, при отмене закрывается. Его надо закрывать и про ок. Как это сделать?
Если тип уч. записи admin, открывается set_defaults.vi
При ок и отмене его тоже надо закрывать.
далее открывается Select_lines (если был введен user он откроется сразу)
надо включить ээс ршо 1 и нажать ок. Окно тоже должно закрываться
Data_input
При ок и отмене вызывается Main_panel.
Тоже надо закрывать. Теперь самое интересное, из main_panel по кнопке надо снова вызывать data_input
K0sinus
beginner
beginner
 
Posts: 43
Joined: 22 Nov 2017, 10:29
Location: Санкт-Петербург
LabVIEW Version: 2014
Karma: 0

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

Postby Artem.spb on 22 Jan 2018, 15:53

> При нажатии ок открывается новый 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 можно вызывать много раз из разных мест, независимо от степени вложенности.
Можно даже рекурсивно, для этого реентрантность нужно включить.
Attachments
setting1.PNG
setting1.PNG (37.99 KiB) Viewed 968 times
Artem.spb
expert
expert
 
Posts: 1330
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 235
CLD hardware I/O VIP freelance

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

Postby K0sinus on 22 Jan 2018, 16:06

Это все мне известно (кроме рекурсивного запуска). Я пытаюсь прикрепить проект, не получается. Пардоньте за неопытность.
Attachments
help.rar
(726.31 KiB) Downloaded 34 times
K0sinus
beginner
beginner
 
Posts: 43
Joined: 22 Nov 2017, 10:29
Location: Санкт-Петербург
LabVIEW Version: 2014
Karma: 0

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

Postby Artem.spb on 23 Jan 2018, 09:09

> Это все мне известно (кроме рекурсивного запуска). Я пытаюсь прикрепить проект, не получается. Пардоньте за неопытность.
если всё известно. то я не понимаю сути вопроса.
что конкретно не получается?
в "проекте" проекта нет, есть только отдельные VI. их нужно правильно "упаковать"
Artem.spb
expert
expert
 
Posts: 1330
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 235
CLD hardware I/O VIP freelance

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

Postby K0sinus on 23 Jan 2018, 09:49

В данном случае важен именно проект? Не пойму, зачем.
Как именно "упаковать"? В этом и заключается вопрос. В моем вложении окна не закрываются при вызове новых. Также, у меня один vi вызывается из другого, из него ещё один, и т.д. а можно ли сделать одну, главную программу, в которой реализован этот алгоритм запуска?
K0sinus
beginner
beginner
 
Posts: 43
Joined: 22 Nov 2017, 10:29
Location: Санкт-Петербург
LabVIEW Version: 2014
Karma: 0

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

Postby Artem.spb on 23 Jan 2018, 10:36

> а можно ли сделать одну, главную программу, в которой реализован этот алгоритм запуска?
не можно, а нужно. Именно в "главном" vi и должна быть реализованна машина состояний.
Artem.spb
expert
expert
 
Posts: 1330
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 235
CLD hardware I/O VIP freelance


Return to Для чайников

Who is online

Users browsing this forum: Google and 10 guests

cron