Создание многооконного приложения с reentatn execution VI

Простейшие вопросы в области инженерной разработки
Ответить
dakishi
assistant
assistant
Сообщения: 120
Зарегистрирован: 05 сен 2019, 21:01
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Создание многооконного приложения с reentatn execution VI

Сообщение dakishi »

Я хочу создать многооконное приложение с помощью subVI работающих в режиме Shared clone reentatn execution, где по N моим кликам на кнопку вызова выплывает N одинаковых окон моих клонированных subVI которые работают одновременно. При этом я могу закрыть любое из окон и вызвать опять еще одно.

Я остановился на проблеме: я могу сделать только фиксированное число окон и потом их все закрыть, т.к. при входе на n-ю итерацию некого цикла, моя программа, допустим, когда видит N` SubVI, запускает их одновременно и ждет их выполнения, соответственно, я не могу добавить новое окно (только закрыть старые). Как можно обойти это ?

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3508
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Создание многооконного приложения с reentatn execution V

Сообщение dadreamer »

Посмотрите пример https://forums.ni.com/t5/LabVIEW/progra ... 39#M864196 Можно запустить сколько угодно окон и как угодно их закрыть. При этом основная программа не ждёт завершения работы SubVI (флаг 0x80 "Prepare to call and forget").

dakishi
assistant
assistant
Сообщения: 120
Зарегистрирован: 05 сен 2019, 21:01
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Создание многооконного приложения с reentatn execution V

Сообщение dakishi »

[quote=="dadreamer"]Посмотрите пример https://forums.ni.com/t5/LabVIEW/progra ... 39#M864196 Можно запустить сколько угодно окон и как угодно их закрыть. При этом основная программа не ждёт завершения работы SubVI (флаг 0x80 "Prepare to call and forget").[/quote]

Не до конца понимаю, как это работает. Можете пояснить, что я делаю не так - здесь я убрал user events и оставил только открытие и закрытие ссылки на прибор. Но, выплывает ошибка LabVIEW: (Hex 0x407) VI Reference type does not match VI connector pane. При этом у моего subVI нет входов и выходов, но в ссылке требуется VI, так понимаю, как минимум с одним входом.
Также не совсем понимаю, как задается reentatn execution. На втором изображении приведен скрин примера оригинала.
Вложения
Ссылка на VI.JPG
Пример.JPG
Последний раз редактировалось dakishi 04 янв 2020, 20:25, всего редактировалось 1 раз.

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3508
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Создание многооконного приложения с reentatn execution V

Сообщение dadreamer »

>> ошибка LabVIEW: (Hex 0x407) VI Reference type does not match VI connector pane.
Надо обновить все константы-ссылки (VI References). Для первой: ПКМ -> Browse for Path -> указываете свой SubVI. Для второй: ПКМ -> Select VI Server Class -> Browse -> указываете свой SubVI.

>> Также не совсем понимаю, как задается reentatn execution.
Задано в настройках SubVI.
2020-01-04_22-41-07.jpg
Однако я ещё бы добавил флаг 0x40 "Enable simultaneous calls on reentrant VIs", т.к. без него несколько одновременно работающих SubVI выполняются последовательно. См. описание функции Open VI Reference.

>> здесь я убрал user events и оставил только открытие и закрытие ссылки на прибор
Верните Start Asynchronous Call Node, иначе чуда не произойдёт. Ну, то есть, ваш СабВИ не запустится.

Посмотрите также примеры в папке C:\Program Files\National Instruments\LabVIEW 2019\examples\Application Control\VI Server\Asynchronous Call By Reference.

dakishi
assistant
assistant
Сообщения: 120
Зарегистрирован: 05 сен 2019, 21:01
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Создание многооконного приложения с reentatn execution V

Сообщение dakishi »

[quote=="dadreamer"]

>> Также не совсем понимаю, как задается reentatn execution.
Задано в настройках SubVI.
2020-01-04_22-41-07.jpg
Однако я ещё бы добавил флаг 0x40 "Enable simultaneous calls on reentrant VIs", т.к. без него несколько одновременно работающих SubVI выполняются последовательно. См. описание функции Open VI Reference.

[/quote]

Спасибо большое! Можете сказать, если я выберу в Property Node у ссылки Execution => Is reentatn - это то же самое, что и в VI properties (кроме настроек распределения памяти) ? И, можете сказать, какой опцией можно закрыть VI после выполнения - либо внутри VI, либо через здесь, из ведущего меню ? Последний вопрос - окошко у меня появляется в правом нижнем углу экрана, его не видно если не перетащить - как можно задать его положения ?

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3508
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Создание многооконного приложения с reentatn execution V

Сообщение dadreamer »

>> если я выберу в Property Node у ссылки Execution => Is reentatn - это то же самое, что и в VI properties (кроме настроек распределения памяти) ?
Да, с помощью свойства можно узнать, что VI реентерантный. Однако в RTE это свойство только для чтения. Записать можно, когда VI не запущен.

>> какой опцией можно закрыть VI после выполнения - либо внутри VI, либо через здесь, из ведущего меню ?
В примере с форума NI все подприборы завершают работу, когда пользовательское событие Custom User Event становится True. Вполне себе нормальный вариант. Можно и логический Notifier использовать при желании. Хотя в данном случае User Event удобнее, т.к. в каждом SubVI уже размещена Event-структура.

>> как можно задать его положения ?
Самое простое - установить Position = Centered в свойствах VI (вкладка Window Run-Time Position).

Аватара пользователя
Usss
assistant
assistant
Сообщения: 136
Зарегистрирован: 19 апр 2017, 23:06
Репутация: 0
Версия LabVIEW: 2018

Re: Создание многооконного приложения с reentatn execution V

Сообщение Usss »

никогда не понимал, почему NI сделал такой неудобный вход в "Open VI Reference"
Вложения
Flags.vi
(4.99 КБ) 44 скачивания
Screenshot_2.png

Ответить

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