ładowanie kontrolek z jednego vi do drugiego

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

witam
pytanie jak w temacie.
czy jest taka możliwość oraz czy jest możliwość załadowania n takich kontrolek pod różnymi nazwami i wykonywanie na nich operacji.

przykład:
mam vi z kontrolką button
chcę ten button dodawać n razy do głównego vi pod różnymi nazwami
[wykonywać na nich operacje jak na osobnych kontrolkach]

jeżeli jest taka możliwość prosiłbym o wskazanie mi drogi którą mam podążać :)

będę wdzięczny za pomoc
i z góry dziękuję
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: jogurt_owocowy »

mam vi z kontrolką button chcę ten button dodawać n razy do głównego vi pod różnymi nazwami
Zaznacz kontrolkę, zrób Ctrl+C, a nasttępnie n razy Ctrl+V ;]
Chyba, że chodzi Ci o grupę n buttonów, wtedy albo:
1. Ułóż je ładnie obok siebie w docelowej konfiguracji i uzyj opcji Group (ikonka po prawej stronie u góry okna Front Panelu). Potem całą grupę kopiuj gdzie potrzeba.
2. Wrzuć kontrolki do klastra (Cluster) ew. Arrange Horizontally/Vertically i używaj takiego klastra jako pojedynczej kontrolki (z grupą buttonów wewnątrz). To jest preferowana opcja.
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

nie zrozumieliśmy się
mam A.vi w którym znajduje się np tylko przycisk

chcę ten przycisk z A.vi wstawić do programu B.vi a dodatkowo
abym mógł wstawić ten przycisk n razy pod różnymi nazwami
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

ładowanie kontrolek z jednego vi do drugiego

Post autor: vugie »

Ręcznie czy programowo?
Jeżeli ręcznie, to nic innego jak ctrl-c + n*ctrl-v

Jeżeli programowo... to jest to wykonalne, ale może być uznane za niemoralne :). Generalnie trzeba poczytać o czymś, co dosyć niefortunnie zostało nazwane Scripting, a potem pytać dalej.
Ostatnio zmieniony 20 mar 2008 13:10 przez vugie, łącznie zmieniany 1 raz.
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

oczywiście że programowo !!!
dzięki za linka szukam właśnie czegoś takiego
można to nazwać dynamicznym tworzeniem kodu
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: jogurt_owocowy »

Zanim zaczniesz skryptować, rozważ to dobrze, bo to wejście na niebezpieczną, wąską i krętą ścieżkę ;)

A do czego są Ci potrzebne te dynamiczne przyciski? Może jest jakieś "normalne" rozwiązanie.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

ładowanie kontrolek z jednego vi do drugiego

Post autor: Mikrobi »

Wlasnie. Zastanów sie dobrze i napisz co chcesz zrealizować.

Wielu juz radosnie rzucalo się na skrypty a potem cichutko kwiliło w kącikach ;)
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

dobra sprawa wygląda następująco

tworzę virtualny panel (client), który łączy się z serverem
server jest podłączony do różnych urządzeń np generatorów, multimetrów po GPIB
w zależności od wybranego urządzenia panel ma wyświetlać konfigurację
dla danego urządzenia i oczywiście ma posiadać możliwość sterowania
danym urządzeniem

w założeniach lista urządzeń jak i konfiguracja jest pobierana z servera
czyli rozwiązanie w typie zakładek odpada - zawsze może dojść nowe
urządzenie i panel nie będzie w stanie go obsłużyć

Mam pewną wizję ale niestety bez dynamicznie generowanego kodu się nie obejdzie

co do skryptów nie bardzo jeszcze jestem w stanie pojąć o co w nich chodzi
póki co moja wiedza w dziedzinie LV nie jest zbyt obszerna aczkolwiek stale się powiększa
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

ładowanie kontrolek z jednego vi do drugiego

Post autor: Mikrobi »

Bardzo trudno bedzie stworzyć program, który będzie się adoptował do konfiguracji mając otwarty (niedoprecyzowany) zbiór urządzeń. Pytanie zatem:
server jest podłączony do różnych urządzeń np generatorów, multimetrów po GPIB w zależności od wybranego urządzenia panel ma wyświetlać konfigurację
dla danego urządzenia i oczywiście ma posiadać możliwość sterowania
danym urządzeniem
Może na serwerze powinny być też znormalizowane VIje, które bedzie można obsługiwać w jednakowy sposób dla wszystkich urzadzeń?
To już samo w sobie bedzie trudne, ale o wiele prostsze od "dynamicznego generowania kodu".
Proponuję popatrzeć na VIServer i możliwość dynamicznego wywoływania VIja. Sugeruję zaglądnąć na paletę Application Control i przeglądnąć przykłady w sieci i na forum dotyczące bloczka Call By Reference Node
:offtopic: ...pomijając oczywiście pisownię, nad którą również warto by popracować.
Ostatnio zmieniony 20 mar 2008 18:54 przez Mikrobi, łącznie zmieniany 1 raz.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

ładowanie kontrolek z jednego vi do drugiego

Post autor: vugie »

Z mojego doświadczenia skrypciarza mogę zasugerować, że lepiej nie używać skryptów w "produkcyjnych" aplikacjach. Nigdy nie wiadomo na jakim runtime engine aplikacja zostanie uruchomiona, a nieudokumentowane metody i własności mogą się zmienić. Bardzo się natomast przydają w przeróżnych programach pomocniczych przy pisaniu głównego kodu, typu masowe przerabianie VI-ów.
Niezależnie od tego jakie rozwiązanie swojego problemu wybierzesz, to i tak będziesz musiał stworzyć coś w rodzaju uogólnionego modelu urządzenia, czy języka opisu urządzenia, którym będzie można opisać każde urządzenie (a i tak znajdzie się takie, które będzie miało coś takiego co to uniemożliwi lub co najmniej mocno utrudni).
Można więc stworzyć także taki ogólny panel, który będzie zawierał wszystkie możliwe kontrolki, a każdą w wystarczającej ilości (dowolną ilość kontrolek danego typu można też zrealizować za pomocą tablic). A już pokazywać i ukrywać kontrolki, przesuwać je i zmieniać im nazwy i parametry wyświetlania można bez żadnego scriptingu.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: jogurt_owocowy »

Dawno, dawno temu był taki wątek w którym autor miał trochę podobny problem. Znajdziesz tam też programik tworzący właśnie wirtualny panel o którym piszesz - tam użycie tego było podyktowane wersją LV jaką krakers mial do dyspozycji. Możesz na nim zobaczyć o co chodzi w scriptingu.
Proponuję popatrzeć na VIServer i możliwość dynamicznego wywoływania VIja. Sugeruję zaglądnąć na paletę Application Control i przeglądnąć przykłady w sieci i na forum dotyczące bloczka Call By Reference Node
Jeśli do tego zestawu dołożyć kontrolkę SubPanel, może się okazać, że nie potrzebujesz nic więcej. Wyobrażam sobie to tak: Po stronie serwera dla każdego urządzenia jest zrobiony vi sterujący naśladujący jego guziczki, pokrętła itd. Na prośbę klienta serwer wysyła listę referencji do tych viajów. Po stronie klienta otwierasz wybrane urządzenie, jego referencję podłączasz do subpanelu i sterujesz zdalnie urządzeniem :)
Tak to sobie wyobrażam, ale nigdy takich cudów nie robiłem. Ktoś próbował?
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

Vugi myślałem o takim rozwiązaniu, była to pierwsza myśl jaka przeszła mi przez głowę, aczkolwiek jest ona mało wysmakowana programistycznie.
Dodatkowo myślałem o stworzeniu czegoś w rodzaju interfejsu. Oczywiście wtedy musi zostać spełniony dodatkowy wymóg jakim jest stworzenie dodatkowych vi-jów komunikacyjnych po stronie servera bądź po prostu update vi-ja servera. Wiadomo wszystkich urządzeń nie będę w stanie tym obsłużyć aczkolwiek pewną grupę dałoby się objąć.

Miniona noc minęła mi pod znakiem VI Scripting-u, bardzo fajne rozwiązanie, aczkolwiek jest to dość kręta ścieżka, która mogłaby okazać się zbyt długa i kręta.Chcąc nie chcąc jestem ograniczony czasowo, więc raczej scripting potraktuję jako ciekawostkę - chyba że nie okaże się tak straszny jak aktualnie to odbieram :]

Dziękuję wszystkim za rady.
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

Re: ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

Czy poza LAVÄ„ jest jakieś miejsce w sieci, gdzie można znaleźć przykłady wykorzystania VI Scriptingu, bądź też można znaleźć dobrze opisane działanie bloczków invoke node i property node.
Mam problem z tworzeniem dynamicznych VIów nie mając pojęcia do czego służą odpowiednie metody

będę wdzięczny za pomoc
student83
Posty: 21
Rejestracja: 02 sty 2008 09:23
Kontakt:

ładowanie kontrolek z jednego vi do drugiego

Post autor: student83 »

jeszcze jedno pytanie czy na prywatnej stronie internetowej można zamieszczać wyniki swoich odkryć w dziedzinie VI Scriptingu czy jest to zabronione przez licencje ?
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

ładowanie kontrolek z jednego vi do drugiego

Post autor: vugie »

czy na prywatnej stronie internetowej można zamieszczać wyniki swoich odkryć w dziedzinie VI Scriptingu czy jest to zabronione przez licencje ?
Są nawet komercyjne programy, które go używają, a LAVA jakby nie było jest prywatną stroną internetową...
Nigdzie indziej żadnego opisu nie widziałem, ale warto LAVę dokładnie przegrzebać - można znaleźć parę przydatnych narzędzi, zwłaszcza kiedy pracuje się na LV 8+
ODPOWIEDZ