Przypisywanie nazw zdarzeniom dynamicznym

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Przypisywanie nazw zdarzeniom dynamicznym

Post autor: Mikrobi »

Witam Pracuję nad aplikacją reagującą dynamicznie na zdarzenia w innej aplikacji. Korzystam z elementu Register For Events dla rejestracji zdarzeń, ale chcial bym tym zdarzeniom nadac wlasne etykiety. Wynika to stad, ze referencje do kontrolek dostaję z tego samego VI'a w związku z czym obsługiwane zdarzenie ma zawsze nazwe "Ctrl at Page Ref" czyli taką sama jak wskażnik wyjściowy VI'a z którego korzystam. Czy zna ktos sposób na określenie etykiet dla zdarzeń ?
Gdybym lokalnie tworzył zdarzenia a potem je rejestrował sprawa była by prosta, nazwę określał bym przy tworzeniu stałej dla zdarzenia przy bloczku "Create User Events". Tutaj zaś jest problem.
pozdrawiam Mikrobi p.s. tak wygląda kod: [img]http://layer.uci.agh.edu.pl/~mikrobi/la ... Events.png[/img]
tomekw
Posty: 22
Rejestracja: 23 kwie 2004 00:00
Lokalizacja: Koziegłowy k/Poznania

Post autor: tomekw »

hm... czy chodzi o ingerencje w "Event Registration Refnum" ?
kolega ma na mysli ... cos w rodzaju Unbundle event source ?

a nie mozna by zastosowac dodatkowego parametru i umiescic strukture Event w Case ?

dobrze kolege rozumiem ?
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Post autor: Mikrobi »

[quote="tomekw"]hm... czy chodzi o ingerencje w "Event Registration Refnum" ? kolega ma na mysli ... cos w rodzaju Unbundle event source ? [/quote] brzmi to tak jak gbyby istniał taki element...? :roll:
[quote] a nie mozna by zastosowac dodatkowego parametru i umiescic strukture Event w Case ? dobrze kolege rozumiem ?[/quote] bardzo dobrze rozumiesz, jakaś bliższa sugestia z tym case'm...?
pozdrawiam Mikrobi
tomekw
Posty: 22
Rejestracja: 23 kwie 2004 00:00
Lokalizacja: Koziegłowy k/Poznania

Post autor: tomekw »

[quote="Mikrobi"] brzmi to tak jak gbyby istniał taki element...? :roll:
[/quote]
to byl taki "skrot myslowy" :) w celu poprawnego przedstawienia problemu
[quote="Mikrobi"] bardzo dobrze rozumiesz, jakaś bliższa sugestia z tym case'm...? [/quote]
rozumiem, ze chodzi o inna obsluge zdarzen z Tab Page tzn. z Tab Page 1 robimy to... a z Tab Page 2 cos innego, wiec wystarczylo by wypuszczac dodatkowa informacje, ktora sterowala by struktura case i w zaleznosci od tego obslugiwala odpowiednie zdarzenie.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Jest rozwiązanie :D

Post autor: Mikrobi »

[quote="tomekw"] rozumiem, ze chodzi o inna obsluge zdarzen z Tab Page tzn. z Tab Page 1 robimy to... a z Tab Page 2 cos innego, wiec wystarczylo by wypuszczac dodatkowa informacje, ktora sterowala by struktura case i w zaleznosci od tego obslugiwala odpowiednie zdarzenie.[/quote]
W zasadzie tak. Dokładniej problem wyglądał następująco: Dwie aplikacje Main i Kontroler Main posiada własny interfejs użytkownika oparty o Tab i rózne kontrolki na każdej stronie. W zależności od aktualnego tryby pracy aktywna jest dana zakładka i użytkownik widzi tylko kontrolki na niej i na nich działa. Zadaniem Kontrolera jest reagowanie (za pomocą zdarzeń) na zmianę wartości tylko wybranych kontrolek w Main. VIServer pozwala na dostęp do zakładek, zwraca tablice referencji do wszystkich kontrolek na danej zakładce, vi który zrobiłem wyszukuje tylko zadane kontrolki i zwraca je w tablicy.
Jest tutaj znaczny bład w rozumowaniu do czego przyznaję z olbrzymim wstydem :oops:

Otóż nie da się apriori zadać etykiet stanowiących nazwy kontrolek z Main "eventom" tak by stanowiły nazwy obsługiwanych zdarzeń jeśli reagują na referencje zdalne bo nie zostały jeszcze wpisane.
To taka drobna różnica między trybem edycji i uruchomienia VI'ja :roll:
Jak to rozwiązać? Stosując funkcję z palety Advance>> Data Manipulation która nazywa się Type Cast. Należy do wejścia określającego typ podłaczyć referencję z lokalnej kontrolki, która będzie się nazywała tak jak zdarzenie w aplikacji którą monitoruje Kontroler, czyli w Main.
[img]http://layer.uci.agh.edu.pl/~mikrobi/la ... utions.png[/img]
Tytułem komentarza: Pierwszy subvi zwraca jedynie tablice znalezionych referencji, których nazwy są podane w wejściowej tablicy stringów.
pozdrawiam Mikrobi p.s. przepraszam za tak szeroki diagram :(
tomekw
Posty: 22
Rejestracja: 23 kwie 2004 00:00
Lokalizacja: Koziegłowy k/Poznania

Post autor: tomekw »

no piekny chwyt :) na to bym nie wpadl.
A mowili, ze Type Cast sluzy do konwersji typow :lol:
czyli te lokalne kontrolki sluza tylko do przekazywania nazwy ?
czy cos wiecej referencja zmienia w zdarzeniu oprocz nazwy ?
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Post autor: Mikrobi »

[quote="tomekw"]no piekny chwyt :) na to bym nie wpadl.
A mowili, ze Type Cast sluzy do konwersji typow
:lol: [/quote] Tak :D LAVA to LAVA (LabVIEW Advanced Virtual Architects) ;). To stamtąd oczywiście to rozwiązanie.
[quote="tomekw"] czyli te lokalne kontrolki sluza tylko do przekazywania nazwy ? czy cos wiecej referencja zmienia w zdarzeniu oprocz nazwy ?[/quote]
Tak. Właśnie najciekawsze jest to, że określa tylko nazwę dla danego eventu. I w ten oto piękny sposób mamy dynamicznie obsługiwane wybrane zewnętrzne eventy z określonymi przez nas etykietami
:D
pozdrawiam Mikrobi
ODPOWIEDZ