Заполнение кластера одного VI в другом VI

Простейшие вопросы в области инженерной разработки
Ответить
alan
advanced
advanced
Сообщения: 157
Зарегистрирован: 30 авг 2012, 13:16
Версия LabVIEW: 16
Откуда: Москва
Контактная информация:

Заполнение кластера одного VI в другом VI

Сообщение alan »

Добрый день!
Вопрос лаконичен: как лучше заполнить кластер, состоящий из контролов, который находится на лицевой панели одного VI, в другом VI?
Поясню. У меня есть кластер, состоящий из множества контролов, и его нужно хитрым образом заполнять.
Естественно делать это в основном VI я не хочу, так как забью все блок-диаграмму. Нужно вынести в отдельную функцию (отдельный VI).
Но тут лично у меня возникает вопрос, как передавать этот кластер в другой VI, идет ли передача данных по значению, или по ссылке.
В си, я бы передал указатель или ссылку на мою структуру. А в лабвью?
Могу создать новый VI, где входным и выходным параметром будут мои кластеры. Передавать на вход в кластер буду через свойство кластера Property node -> Value, выводить так же.
Но правильно ли так делать? Ведь если в контроле содержится большой объем данных, то я по сути буду несколько раз копировать эти данные в памяти, что не эффективно.
Или нужно делать через ссылку на контролы, которые составляют этот кластер?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5345
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 25 раз
Поблагодарили: 65 раз

Re: Заполнение кластера одного VI в другом VI

Сообщение IvanLis »

alan писал(а):как лучше заполнить кластер, состоящий из контролов, который находится на лицевой панели одного VI, в другом VI
Делаете ссылку (reference) на этот кластер, для удобства задайте его структуру как type definition.
Задаете reference как входной параметр SubVI.
Внутри SubVI обращаетесь к этому кластеру через ссылку, а к отдельным элементам используя type definition.


------------ LV2010 -----------
MainVI.vi
(7.56 КБ) 123 скачивания
SubVI.vi
(8.47 КБ) 141 скачивание
ControlTypeDef.ctl
(4.92 КБ) 114 скачиваний
alan
advanced
advanced
Сообщения: 157
Зарегистрирован: 30 авг 2012, 13:16
Версия LabVIEW: 16
Откуда: Москва
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение alan »

IvanLis, у Вас в файле Cluster Refnum. Я уже все обыскал, как найти эту ссылку в панели инструментов?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2106
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 19 раз
Поблагодарили: 15 раз

Re: Заполнение кластера одного VI в другом VI

Сообщение Borjomy_1 »

На кластере ПКМ->Create->Reference. Константу можно превратить в контрол ПКМ->Change to Control
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5345
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 25 раз
Поблагодарили: 65 раз

Re: Заполнение кластера одного VI в другом VI

Сообщение IvanLis »

Borjomy_1 писал(а):Константу можно превратить в контрол ПКМ->Change to Control
В Linux немного по другому, но принцип аналогичен:
Без имени1.png
Без имени1.png (11.44 КБ) 4196 просмотров
А вообще можно сделать и так:

Z6i3Hd6gD90
alan
advanced
advanced
Сообщения: 157
Зарегистрирован: 30 авг 2012, 13:16
Версия LabVIEW: 16
Откуда: Москва
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение alan »

Спасибо, господа!

А такой вопрос сопутствующий. У меня на входе в VI много ссылок на разные кластеры. Так как я их всех заполняю в одном VI.
Мне не всегда нужно подключать на вход все ссылки, поэтому встает вопрос: как мне проверить внутри VI подключена ли ссылка, и вообще, правильная она или нет.
Если не подключена, я просто не буду использовать определенный блок программы.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3820
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 6 раз
Поблагодарили: 86 раз
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение dadreamer »

alan,
Вложения
2015-10-20_17-22-48.jpg
rsv
assistant
assistant
Сообщения: 120
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2018
Благодарил (а): 15 раз
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение rsv »

IvanLis писал(а): 14 окт 2015, 08:20
Внутри SubVI обращаетесь к этому кластеру через ссылку, а к отдельным элементам используя type definition.
Добрый день.
Как работать со значениями элементов кластера в SubVI понятно, но мне необходимо в SubVI изменить свойства элементов.
Как можно по ссылке на кластер добратья до свойств элементов кластера, TipStrip например?
Artem.spb

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

Re: Заполнение кластера одного VI в другом VI

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

rsv писал(а): 23 сен 2022, 10:10 Как можно по ссылке на кластер добратья до свойств элементов кластера, TipStrip например?
tipstrip.png
tipstrip.png (13.43 КБ) 144 просмотра
ujin1
assistant
assistant
Сообщения: 103
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 5 раз
Поблагодарили: 14 раз
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение ujin1 »

rsv писал(а): 23 сен 2022, 10:10
IvanLis писал(а): 14 окт 2015, 08:20
Внутри SubVI обращаетесь к этому кластеру через ссылку, а к отдельным элементам используя type definition.
Добрый день.
Как работать со значениями элементов кластера в SubVI понятно, но мне необходимо в SubVI изменить свойства элементов.
Как можно по ссылке на кластер добратья до свойств элементов кластера, TipStrip например?
ref1.png
ref1.png (7.17 КБ) 140 просмотров
ref3.png
ref4.png
ref4.png (3.52 КБ) 140 просмотров
ref6.png
Изображение
rsv
assistant
assistant
Сообщения: 120
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2018
Благодарил (а): 15 раз
Контактная информация:

Re: Заполнение кластера одного VI в другом VI

Сообщение rsv »

Спасибо, Artem.spb и ujin1.
P.S.
А я всё искал возможность через ссылку на кластер создать ссылку на элемент и для него редактировать узел свойств...
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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