Obsługa kilku obiektów w klastrze za pomocą Event Structure

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
MK_Zuk
Posty: 80
Rejestracja: 01 gru 2009 11:53
Wersja środowiska: LabVIEW 2014
Has thanked: 1 time
Been thanked: 1 time

Obsługa kilku obiektów w klastrze za pomocą Event Structure

Post autor: MK_Zuk » 07 mar 2016 10:39

Witam.
Mam problem taki:
- mam 8 kanałów analogowych, których konfiguracja ustawiona jest
za pomocą klastra (Custom Control) (Rys 1)
- W klastrze znajduje się drugi klaster ("Wartość") zawierający konfigurację
przetwornika pomiarowego.
- Klikając przycisk "Z tabeli" otwiera się okno wyboru dostępnych przetworników,
- W chwili obecnej zrobiłem kod który działa tylko dla jednego kanału, (Rys 2 - kod, Rys 3 - event)
żeby obsłużyć wszystkie 8 kanałów musiałbym utworzyć tyle samo zdarzeń w strukturze Event.

Czy jest jakaś możliwość w jednym zdarzeniu wykryć, który kanał użytkownik chce konfigurować
i tylko w nim dokonać zmiany? Czy muszę obsłużyć każdy kanał w osobnym zdarzeniu?

Jako załączniki wrzucam widok okna konfiguracji oraz kod wykonany do obsługi przycisku Z tabeli dla kanału 1.
Będzie się trzeba jakoś dostać do referencji tych przycisków i porównywać z aktualnie przyciśniętym, tylko
nie mam pojęcia jak to zrobić.

Pozdrawiam
Marek
Załączniki
konfig kanalow - event.png
konfig kanalow - kod.png
konfig kanalow.png
konfig kanalow.png (16.48 KiB) Przejrzano 1964 razy

TMa
Posty: 198
Rejestracja: 07 sty 2010 12:56
Wersja środowiska: LabVIEW 2017
Been thanked: 3 times

Re: Obsługa kilku obiektów w klastrze za pomocą Event Structure

Post autor: TMa » 07 mar 2016 13:46

Na pierwszy rzut oka masz zbyt mocne sprzężenie pomiędzy danymi przechowującymi konfigurację i interfejsem użytkownika. Jak chcesz stworzyć aplikację elastyczną na ilość kanałów, typy konfiguracji, rodzaje wejść/wyjść - potrzebujesz rozdzielić te dwie warstwy (co np w przypadku karty daq o 32 AI?).

Krótko rzecz ujmując: stwórz sobie klaster, z którego konfigurujesz dany typ IO i uaktualniaj do w zależności od aktywnego (dla użytkownika) indeksu. Przyciski do dodatkowej obsługi też będą się tyczyć danego (wybranego) kanału.
Ostatnio zmieniony 07 mar 2016 13:47 przez TMa, łącznie zmieniany 1 raz.

PiDi
Posty: 604
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2015
Lokalizacja: Katowice
Has thanked: 2 times
Been thanked: 1 time

Re: Obsługa kilku obiektów w klastrze za pomocą Event Structure

Post autor: PiDi » 08 mar 2016 22:58

Podobnie jak TMa mam wątpliwości co do tego kodu (czemu przycisk do wczytywania należy do klastra z konfiguracją? to dwie kompletnie różne rzeczy, konfiguracja powinna być jasno zdefiniowanym klastrem, przycisk do jej wczytywania nie powinien do niej należeć), ale dla sportu można tak:
Events.png
(ciche założenie - te klastry powinny być oczywiście typedefami, inaczej wszystko się przy pierwszej zmianie rozsypie).

Trochę łatwiejsze w rozbudowie rozwiązanie może wykorzystać dynamiczną rejestrację eventów - tu łatwiej dodać kolejne kontrolki do obsłużenia:
EventsDynamic.png
Załączniki
EventsDynamic.vi
(15.45 KiB) Pobrany 86 razy
Events.vi
(13.75 KiB) Pobrany 84 razy
ObrazekObrazekObrazek

MK_Zuk
Posty: 80
Rejestracja: 01 gru 2009 11:53
Wersja środowiska: LabVIEW 2014
Has thanked: 1 time
Been thanked: 1 time

Re: Obsługa kilku obiektów w klastrze za pomocą Event Structure

Post autor: MK_Zuk » 23 mar 2016 12:02

Dzięki serdeczne.
Co do rozwiązania TMa niestety kod jest już tak daleko, że wygodniej będzie
mimo wszystko zrobić 8 eventów, Twoją uwagę zapamiętam na przyszłość ;)

Dlaczego przycisk należy do klastra: chciałem, żeby ładnie w GUI wyglądało
i żeby przycisk w GUI od razu intuicyjnie wskazywał na swoje działanie.

Pozdrawiam
Marek

TMa
Posty: 198
Rejestracja: 07 sty 2010 12:56
Wersja środowiska: LabVIEW 2017
Been thanked: 3 times

Re: Obsługa kilku obiektów w klastrze za pomocą Event Structure

Post autor: TMa » 23 mar 2016 12:59

MK_Zuk pisze:Dzięki serdeczne.
Dlaczego przycisk należy do klastra: chciałem, żeby ładnie w GUI wyglądało
i żeby przycisk w GUI od razu intuicyjnie wskazywał na swoje działanie.
W tym celu używa się palety Decorations. Popatrz tu

ODPOWIEDZ