Pobieranie danych z uruchomionego subVi

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
marcel_o
Posty: 9
Rejestracja: 19 maja 2013 14:00
Wersja środowiska: LabVIEW 8.0

Pobieranie danych z uruchomionego subVi

Post autor: marcel_o »

Witam,
zrobiłem dwa programy i chcialbym utworzyc z nich jednego vi. Pierwszy sluzy do generowania sygnałow natomiast drugi do akwizycji danych. Obecnie sprawa wyglada nastepujaco:
po odpaleniu programu pojawia mi sie front panel, na ktorym widnieje m.in. przycisk generuj i po jego wcisnieciu otwiera sie subVi. W nim ustawiam odpowiednie parametry i po akceptacji przyciskiem ok subVi zamyka sie i nastepuje powrot do okna glownego. I tu pojawia sie problem poniewaz uruchomienie subVi z akwizycja danych mialoby sens gdyby do struktury event (taka wykorzystalem do programu glownego) dostawal sie sygnal z generatora.
Mianowicie chodzi o to co zrobic by po zamknieciu (zminimalizowaniu) albo w trakcie subVi generatora sygnal byl przekazywany dalej.
W vi z generatorem wykorzystana jest petla while loop.

Dodam iż po podlaczeniu rzeczywistego generatora wszystko dziala jak nalezy.

Czy modyfikacji wymaga sam generator czy tez program glowny? Mam nadzieje, ze dosc zrozumiale opisalem moj problem. W przypadku propozycji w formie programow prosilbym podsylac rowniez screeny poniewaz nie mam ciaglego dostepu do LabVIEW 8.0.
Awatar użytkownika
Pitol
Moderator
Posty: 983
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Pobieranie danych z uruchomionego subVi

Post autor: Pitol »

Najprościej by było, gdybyś do swojego opisu dodał jeszcze zrzuty ekranu tych dwóch VI (lub po prostu je dołącz do wiadomości jeśli możesz).

Rozumiem, że te dwa "programy" działają niezależnie od siebie, a Ty chciałbyś, żeby dane z jednego były dostępne w drugim?
Jest na to parę sposobów, ale bez informacji o tym jak zrobione masz te dwa VI nie będziemy w stanie wiele pomóc.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
marcel_o
Posty: 9
Rejestracja: 19 maja 2013 14:00
Wersja środowiska: LabVIEW 8.0

Re: Pobieranie danych z uruchomionego subVi

Post autor: marcel_o »

Tak, te dwa programy działają niezależnie od siebie. Program główny posiada 3 struktury event reagujace na przycisk generuj, akwizycja i stop. To wszystko znajduje się w while loop. Chodzi mi o to by po uruchomieniu subVi (generator) i ustawieniu w nim parametrów po zatwierdzeniu sygnał był dostępny dla drugiego subVi a nie tak jak jest obecnie, że wraz z zatwierdzeniem subVi konczy działanie co się równa z brakiem sygnału.

Vi generator po odpaleniu działa i reaguje na wszelkie wprowadzane zmiany parametrów i wyświetla aktualny przebieg, aż do momentu zakończenia programu. Wszystkie bloczki znajdują się w strukturze while loop, która kończy się w momencie wciśnięcia stopu.
Grzesiek080
Posty: 82
Rejestracja: 26 maja 2009 07:18
Wersja środowiska: LabVIEW 2012
Lokalizacja: Sucha Beskidzka
Kontakt:

Re: Pobieranie danych z uruchomionego subVi

Post autor: Grzesiek080 »

Z tego co widze to pojawia sie pytanie czy chcesz zamykac vi w którym ustawiasz parametry generowania sygnału. Jesli chcesz go zamykać ( po zatwierdzeniu) to nie możesz w nim generowac sygnału.
Wtedy pobierasz tylko ustawienia a generowanie robisz w tym pierwszym vi. A jeśli nie chcesz go zamykac to po zatwierdzeniu parametrów sygnału zaczynasz je przesyłać do kolejki ( albo lepije do notifier-a). I odbierasz w głównym vi ale w osobnym wątku ( innej pętli niż ta do obsługi eventów). Jesli chcialbyś jednak zamykac vi do konfiguracji parametrów to po odebraniu parametrów przez głownego vi też musisz miec dodatkowy wątek który zajmie sie genrowaniem przebiegów.
Wiec bedziesz miał powiedzmy 3 wątki ( pętle ) w głównym vi.
Jedna bedzie odpowiedzialna za obsługe przycisków, druga za generowanie sygnałow ( jeśli wątke odpowiedzalny za obsługe przycisków wygeneruje zdarzenie - "generuj sygnał"), a trzeci wątek bedzie odpowiedzialny za pokazywanie przebiegu na wykresie jeśli dostanie dane z drugiego watku.

Tyle z mojej strony :):)
marcel_o
Posty: 9
Rejestracja: 19 maja 2013 14:00
Wersja środowiska: LabVIEW 8.0

Re: Pobieranie danych z uruchomionego subVi

Post autor: marcel_o »

Stworzony generator pelni funkcje samodzielnego urzadzenia, po jego odpaleniu mamy mozliwosc zmiany ustawien i ogladania aktualnego przebiegu. Nie rozumiem jak mialbym podzielic tego vi, poniewaz chce by po uruchomeniu widoczny byl oryginalny jego wyglad (w tym celu zostal stworzony jako osobny vi).
Grzesiek080
Posty: 82
Rejestracja: 26 maja 2009 07:18
Wersja środowiska: LabVIEW 2012
Lokalizacja: Sucha Beskidzka
Kontakt:

Re: Pobieranie danych z uruchomionego subVi

Post autor: Grzesiek080 »

Hej,

To zrób tak:
1.
1. Zostaw petle z event case tak jak jest i gdy wywołasz zdarzenie kliknięcia przycisku "Generuj Sygnał" zezwól na wywołanie vi z generowaniem sygnału ale nie umieszczaj tego w evencie.
ale umieśc vi który generuje sygnał w osobnym wątki (petli).
2. Po rozpoczeciu generowania włącz analize sygnału w głownym vi ( nastepny event ) i zezwól na wykonanie vi który analizuje sygnał ale tez nie w petli gdzie masz event ale w trzecim wątku.
3. Przekazuj dane za pomiedzy vi Generuj i Analizuj za pomocą np Kolejki.

Podsumowując :
Obsługa przycisków głownego Vi w strukturze event w pierwszym wątku.
Obsługa Generowania Sygnału w drugim wątku ( zezwolenie wykonania vi z pierwszego wątku).
Analiza sygnału w trzecim wątku ( zezwolenie na analize w pierwszym wątku).
Dane przekazywane z drugiego do trzeciego wątku za pomocą kolejki, lub notifiera ( musisz zrobic globala z referencją).

pozdrawiam
marcel_o
Posty: 9
Rejestracja: 19 maja 2013 14:00
Wersja środowiska: LabVIEW 8.0

Re: Pobieranie danych z uruchomionego subVi

Post autor: marcel_o »

Dodałem nową pętlę (załącznik) obok struktury event i teraz podczas uruchomionego subvi'a "generator" sygnał jest przesyłany do głównego programu i mogę go oglądać na wyświetlaczu czyli jest ok. Natomiast w dalszym ciągu nie mogę uruchomić drugiego podprogramu, gdy włączony jest pierwszy. Obydwa znajdują się w strukturze event. Wiem, że kolega wyżej pisał, aby umieścić je w osobnej pętli, ale nie wiem jak z kolei uruchamiać te pętle "na przycisk". Mogę liczyć na kolejne propozycje?
Załączniki
plp.png
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Pobieranie danych z uruchomionego subVi

Post autor: Jamal79 »

wrrrrr, pisze juz to kolejny raz....

Pod notifiera podepnij clustra z danymi i statusami guzikow do "element data type" . Zmodyfikuj odpowiednio vi'aje...

PS, zastanow sie nad kolejkami (queue) sa bardziej niezawodne od sygnalizacji (notifier)...
ODPOWIEDZ