Strona 1 z 1

zamiana kontrolki na indykator "w locie"?

: 18 gru 2009 16:26
autor: slav
Mam nastepujacy problem. Tworze program do sterowania eksperymentu, w LabView jestem poczatkujaca. Na moim fornt panelu sa rozne kontrolki (w postaci klastra, zdefiniowane jako plik .ctl), np. typu boolean, po ich odpowiednim "wyklikaniu" tworzony jest waveform i za pomoca wygenerowanych w tn sposob sygnalow TTL i analogowych sterujemy roznymi urzadzeniami. Wszystko jest ok i dziala. Ale chcialabym jakies konkretne ustawienia zapisac na dysk i wgrac z dysku. I to tez dziala.
Jednakze chcialabym, aby po zaladowaniu ustawien z dysku "powciskaly" mi sie odpowiednie kontrolki, zeby widac bylo, co zaladowalam. I tu mam problem, gdyz to sa kontrolki a nie indykatory. Myslalam, zeby uzyc Property Node: Indicator, ale on nie dziala podczas pracy programu. I nie wiem jak zrobic, zeby moj fornt panel byl raz kontrolka (gdy tworze sygnal sama), a raz indykatorem (gdy go wgrywam z dysku). Jestem przekonana, ze jest na to jakis standardowe rozwiazanie. Prosze o wskazanie, jak to zrobic lub gdzie znalezc jakies wskazowki.

Re: zamiana kontrolki na indykator "w locie"?

: 18 gru 2009 17:08
autor: coolfon
To czy jest to kontrolka czy indykator nie ma w tym przypadku żadnego znaczenia. Wartości Twoich kontrolek możesz poustawiać korzystając z Property Node -> Value. Klikasz na nim prawym przyciskiem, wybierasz Change To Write i już możesz podpinać odczytane z pliku wartości. Przykład poniżej.
example.png
example.png (6.8 KiB) Przejrzano 9988 razy

Re: zamiana kontrolki na indykator "w locie"?

: 18 gru 2009 23:40
autor: Mikrobi
Pozwole sobie poprawić: do wpisywania wartości raczej Local Variable (zmienna lokalna) - tworzona w ten sam sposób
Taka metoda jest szybsza i działa w oczekiwany sposób, węzły własności (property node) nalezy stosować przy bardziej złozonych operacjach modyfikacji kontrolki.

Re: zamiana kontrolki na indykator "w locie"?

: 20 gru 2009 13:39
autor: smiga
Mikrobi pisze:Pozwole sobie poprawić: do wpisywania wartości raczej Local Variable (zmienna lokalna) - tworzona w ten sam sposób
Taka metoda jest szybsza i działa w oczekiwany sposób, węzły własności (property node) nalezy stosować przy bardziej złozonych operacjach modyfikacji kontrolki.
Czy kolega Mikrobi mógłby wyjaśnić szerzej dlaczego ta metoda jest szybsza i działa w oczekiwany sposób?
Myślałem, że operując na property node operujemy poprzez jakiś wskaźnik, referencję na konkretnym fragmencie pamięci utworzonym dla danej np. kontrolki.
Tworząc zmienną lokalną, tworzymy chyba nowy obszar pamięci, z którego następuje przepisanie wartości do fragmentu pamięci odpowiadającemu danym tejże kontrolki ... czy się mylę? ... jeżeli tak jest to ta operacja wydaje mi się wolniejsza ... ale chyba najlepszym sposobem jest to przetestować, co zaraz uczynię.

Faktycznie sprawdziłem i różnica jest ogromna - zmiana wartości kontrolki (w reprezentacji double precision ) w pętli for 10000 iteracji:
-poprzez zmienną lokalną: 1 do 2 milisekund
-poprzez property node: prawie 1700 milisekund

Proszę jednak o wytłumaczenie, jeżeli jest to możliwe.

dziękuję i pozdrawiam

zamiana kontrolki na indykator "w locie"?

: 20 gru 2009 18:00
autor: slav
Dzieki! Zastosowalam sposob ze zmienna lokalna, wszystko ladnie dziala :)

zamiana kontrolki na indykator "w locie"?

: 20 gru 2009 19:53
autor: vugie
Zapis przez Property Node wymusza odrysowanie kontrolki, gdy poprzez zmienną lokalną zmienia się tylko jej wartość, a odrysowuje się swoim własnym tempem.

zamiana kontrolki na indykator "w locie"?

: 21 gru 2009 10:04
autor: Mikrobi
Vougie ma w zasadzie rację.
Ogólniej pisząc: kontrolka jest obiektem o wielu różnych własnościach, zajmującym określony obszar pamięci.
Węzły własności są narzędziami zmieniającymi programowo dostępne własności kontrolki, nie tylko wartość. Dla wykonania takiej operacji w sposób optymalny tworzona jest w pamięci buforowej kopia kontrolki, na kopi wykonywane są operacje zdeklarowane węzłem, od góry do dołu węzła jeśli jest kilka pozycji.
Po zakończeniu wszystkich operacji z bufora kontrolka kopiowana jest na interfejs. To właśnie czas konsumowany przez węzeł własności.
Odwołanie przez zmienną lokalną jak napisał vougie to odwołanie do tego obszaru pamięci kontrolki, który przechowuje jej wartość, bez wykonywania kopi.