Как родителю узнать имя клона потомка?

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
Juri
I/O
I/O
Сообщения: 263
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 13 раз
Поблагодарили: 6 раз

Как родителю узнать имя клона потомка?

Сообщение Juri »

Субпанель отображает окно Window.vi или Window.Reentrun.vi. Выбирается кнопкой.
С Window.vi проблем нет. Получил ссылку на окно путем, описанным на втором скриншоте.
С Window.Reentrun.vi все сложней. Как узнать имя клона?

Можно конечно создать в родителе очередь, чтобы потом потомок после запуска отправлял ссылку на себя в эту очередь, но я так не хочу. Придется постоянно в каждом потомке создавать одинаковый набор действий, отправляя родителю эту ссылку.
Вложения
1.zip
(110.52 КБ) 77 скачиваний
Screenshot_1.png
Screenshot_2.png
Screenshot_2.png (6.04 КБ) 1460 просмотров
Artem.spb

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

Re: Как родителю узнать имя клона потомка?

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

="Usss" писал(а):С Window.Reentrun.vi все сложней. Как узнать имя клона?
не совсем понял вопрос.
Нужно узнать имя клона, или того, кто в subPanel?
второе делается так:
sub_name.png
чтобы потом потомок после запуска отправлял ссылку на себя в эту очередь, но я так не хочу. Придется постоянно в каждом потомке создавать одинаковый набор действий, отправляя родителю эту ссылку.
Тоже не вижу проблем. В потомке НЕ нужно создать ОДИНАКОВЫЙ набор действий: на то он и потомок, чтобы вызвать родительский метод, созданный один раз.

Если я неверно понял вопрос, то стоит его переформулировать
Аватара пользователя
Juri
I/O
I/O
Сообщения: 263
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 13 раз
Поблагодарили: 6 раз

Re: Как родителю узнать имя клона потомка?

Сообщение Juri »

Чуть модифицировал Launch.vi из проекта выше.
В нижнем левом углу Open VI Reference получает ссылку на Window.vi потомка. Если такой vi в потомке не существует, то происходит ошибка. В таком случае предполагается, что в потомке должна существовать Window.Reentrun.vi. Разница между ними в том, что Window.vi настроена на вызов в режиме Non-reentant Execution, а Window.Reentrun.vi в режиме Shared clone reentant execution. Смысл в том, что я создаю отдельную подпрограмму Window.vi, чтобы не загромождать кодом исходную программу-матку :crazy: , в этом случае я не предполагаю вызывать параллельно эту подпрограмму несколько раз. Однако есть случаи, когда мне надо создать несколько одинаковых окон, которые должны работать параллельно. В этом случае в дочернем классе я создаю не Window.vi а Window.Reentrun.vi. И мне надо как-то получить vi reference на клона, чтобы вставить его в суб панель или чтобы открыть в процессе исполнения в отдельном окне. В случае с Window.vi проблем не возникает, vi reference получаю уже описанным выше способом. Но если в классе потомке надо загрузить рэференс на клон Window.Reentrun.vi то в таком случае приходится поместить в Window.Reentrun.vi потомка код, который отправляет родителю vi reference самого себя. Так вот я надеялся, что в Window.Reentrun.vi можно было бы вообще не вставлять никакого дополнительного кода, но не понимаю как этого добиться.
Вложения
Screenshot_1.png
Artem.spb

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

Re: Как родителю узнать имя клона потомка?

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

Что-то я не могу понять, что вы пытаетесь сделать, вероятно, потому что вы решили усложнить себе жизнь.

Если у потомка Window.Reentrun.vi является аналогом Window.vi, то почему они имеют разные имена?
Конечно, в этом случае у них должны быть одинаковые настройки клонирования.
в этом случае я не предполагаю вызывать параллельно эту подпрограмму несколько раз
Это не мешает задать клонируемоость. Ну будет у вас один клон, но жизнь вы себе сильно упростите.
Ответить

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