Witam,
Byłbym wdzięczny jakby ktoś mi pomógł rozwiązać pewien problem w mojej pracy inżynierskiej. Generalnie chodzi mi o to aby do referencji do TabControl z pierwszego VI (oznaczmy go jako VI-a) odwołać się z poziomu drugiego VI (oznaczmy go jako VI-b). W najprostszy sposób byłoby poprzez connector na wejściu z VI-b wprowadzić referencję do TabControl z VI-a, jednak nie potrafię tego wykonać. Jeżeli ktoś byłby w stanie mi pomóc to byłbym wdzięczny.
P.S. Być może jest w projekcie możliwość utworzenia globalnej referencji która odwoływałaby się do każdego VI.
Pozdrawiam,
Paweł
Referencje pomiędzy VI
Re: Referencje pomiędzy VI
Jeśli dobrze rozumiem, to:
VI-a: ma Tab Control na front panelu.
VI-b: w nim chcemy mieć referencję do tego Tab Controla.
W VI-a z menu kontekstowego taba Create-> Reference. Na Block diagramie utworzy się referencja. Na niej Create-> Indicator, a następnie podłącz go do konektora jako wyjście. Skopiuj go do VI-b, zamień na kontrolkę, podłącz do wejścia. Zamieszczam przykład.
VI-a: ma Tab Control na front panelu.
VI-b: w nim chcemy mieć referencję do tego Tab Controla.
W VI-a z menu kontekstowego taba Create-> Reference. Na Block diagramie utworzy się referencja. Na niej Create-> Indicator, a następnie podłącz go do konektora jako wyjście. Skopiuj go do VI-b, zamień na kontrolkę, podłącz do wejścia. Zamieszczam przykład.
- Załączniki
-
- Przesyłanie referencji.png (9.53 KiB) Przejrzano 8025 razy
-
- Posty: 289
- Rejestracja: 01 maja 2012 14:14
- Wersja środowiska: LabVIEW 2012
- Lokalizacja: Farum
Referencje pomiędzy VI
W przypadku dwoch sub-VI'ai bedzie dzialac, ale jak zamierzasz odpalac dwa poszczegolne programy to musial bys zapisac wartosc np, do pliku, albo uzyc "globalnych zmiennych". Jezeli maja dzialac na roznych klientach, to "globalne zmienne" tez powiny rozwiazac problem...
Brak, konkretow to i malo konkretne odpowiedzi...
Brak, konkretow to i malo konkretne odpowiedzi...
Re: Referencje pomiędzy VI
Próbowałem zastosować metodę zaproponowaną przez ,,Trint" jednak program się zawiesza i nic nie mogę zrobić. W załączniku przesyłam całą pracę. Problem polega na tym, że chciałbym zakładki TabControl z VI-Panele ukrywać tak jak to zrobiłem w TabControl-Hierarchia. Jednak nie mam pojęcia jak to połączyć referencjami. Jak wrzucam to wszystko do jednego VI-a to działa elegancko jednak promotor nie uznaje całego programu w jednym VI. Dlatego prosiłbym o pomoc w odpowiednim skonfigurowaniu referencji.
- Załączniki
-
- Praca Inz.lvproj
- (6.12 KiB) Pobrany 437 razy
-
- Hierarchia.vi
- (36.43 KiB) Pobrany 389 razy
-
- Panele.vi
- (2.15 MiB) Pobrany 397 razy
Re: Referencje pomiędzy VI
Ten program się nie zawiesza, tylko posłusznie robi to, co programista mu kazał.
1.
Po co w twoim subVI (Hierarchia.vi) drugi TabControl, skoro chcesz modyfikować ten pierwszy, z Panele.vi ?
Żeby to zrobić, trzeba przesłać referencję do subVI, czyli z kontrolki Tab Control 2 (refnuma) utworzyć jedno z wejść do niego.
Potem w głównym Vi z menu kontekstowego Tab Control: Create -> Reference, i połączyć utworzoną referencję z subVI.
2.
Po co w subVI struktura Event? ona czeka na wciśnięcie przycisku Loguj na swoim panelu, a nie Login na panelu głównego VI. Ale ten pierwszy się nie wyświetla, bo po prostu front panele subVI-ów się domyślnie nie wyświetlają. Więc nie ma czego wcisnąć, więc program czeka w nieskończoność - "zawiesza się".
3.
Po co w subVI pętla w pętli, a obie mają taki sam warunek zakończenia? Wychodzi mi, że przy prawidłowym działaniu obie powinny wykonać się dokładnie raz, czyli w ogóle ich nie musi być.
4.
Uprościłem twój kod. A na przyszłość, pisz spokojniej. Sam siebie potrafiłem zaskoczyć, jak szybko człowiek zaczyna dążyć do pisania tzw. spagetti.
(Jak przyprawić programistę LV o zawał? wpisać w google "labview spaghetti code")
1.
Po co w twoim subVI (Hierarchia.vi) drugi TabControl, skoro chcesz modyfikować ten pierwszy, z Panele.vi ?
Żeby to zrobić, trzeba przesłać referencję do subVI, czyli z kontrolki Tab Control 2 (refnuma) utworzyć jedno z wejść do niego.
Potem w głównym Vi z menu kontekstowego Tab Control: Create -> Reference, i połączyć utworzoną referencję z subVI.
2.
Po co w subVI struktura Event? ona czeka na wciśnięcie przycisku Loguj na swoim panelu, a nie Login na panelu głównego VI. Ale ten pierwszy się nie wyświetla, bo po prostu front panele subVI-ów się domyślnie nie wyświetlają. Więc nie ma czego wcisnąć, więc program czeka w nieskończoność - "zawiesza się".
3.
Po co w subVI pętla w pętli, a obie mają taki sam warunek zakończenia? Wychodzi mi, że przy prawidłowym działaniu obie powinny wykonać się dokładnie raz, czyli w ogóle ich nie musi być.
4.
Uprościłem twój kod. A na przyszłość, pisz spokojniej. Sam siebie potrafiłem zaskoczyć, jak szybko człowiek zaczyna dążyć do pisania tzw. spagetti.
(Jak przyprawić programistę LV o zawał? wpisać w google "labview spaghetti code")
- Załączniki
-
- Panele.vi
- (1.14 MiB) Pobrany 424 razy
-
- Hierarchia.vi
- (11.06 KiB) Pobrany 399 razy
Re: Referencje pomiędzy VI
Nie wiem jak Ci dziękować za pomoc. W życiu nie pomyślałbym, że można aż tak uprościć moje wypociny. Uświadomiłeś mi, że jeszcze daleka droga przede mną do tworzenia dobrych programów w LV. Niestety póki co sam sobie utrudniam sprawę i niepotrzebnie komplikuję tworzone przez siebie programy. Pozdrawiam i jeszcze raz dziękuje za pomoc.