Problem z property node legend autosize

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
apb
Posty: 4
Rejestracja: 20 lis 2017 11:59
Wersja środowiska: LabVIEW 2017

Problem z property node legend autosize

Post autor: apb » 20 lis 2017 12:38

Cześć.

Mam problem z automatycznym dopasowywaniem wielkości legendy poprzez property node.

W załączniku wstawiam tylko część kodu (stąd występują puste przestrzenie na front panelu), jednak wszystko co potrzeba zamieściłem.

Problem wygląda następująco:
Jeśli po odpaleniu programu i jego wykonaniu, zmienimy opis pierwszej krzywej na górnym wykresie (constant na block diagram) na dłuższy, wykonanymy program, a następnie wrócimy do poprzedniej nazwy i ponownie wykonamy program, wszystko działa dobrze, szerokość legendy zostanie prawidłowo dopasowana.

Jeśli jednak w polu "Inne wykresy" (metoda 1) wybierzemy "charakterystyka + W3 + W5", wykonamy program, a następnie wrócimy do pozycji "wyłączony", wielkość legendy nie zostanie dopasowana. Dopiero przejście przez inną pozycję, np. "stały wyprostowany" i powrót do "wyłączony" spowoduje prawidłowe dopasowanie wielkości legendy.

Czy ktoś z Was miałby chwilkę, aby spojrzeć na mój program? Próbowałem rozwiązać problem, jednak już brakuje mi pomysłów, gdzie jest błąd.
Z góry serdecznie dziękuję za pomoc.

charakterystyka_czujnika.rar
(215 KiB) Pobrany 9 razy

apb
Posty: 4
Rejestracja: 20 lis 2017 11:59
Wersja środowiska: LabVIEW 2017

Re: Problem z property node legend autosize

Post autor: apb » 20 lis 2017 12:41

Zapisałem jeszcze projekt dla starszej wersji labview:
Aplikacja_charakterystyka_czujnika.rar
(130.43 KiB) Pobrany 9 razy

Awatar użytkownika
Pitol
Moderator
Posty: 916
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków
Has thanked: 1 time
Been thanked: 7 times

Re: Problem z property node legend autosize

Post autor: Pitol » 20 lis 2017 15:11

Problem jest w tym, że w każdej z opcji (Wyłączony, Charakterystyka + W3 + W5, itp) podajesz różną liczbę przebiegów.
PlotNames.PNG
PlotNames.PNG (7.87 KiB) Przejrzano 225 razy
Dla trybu "Wyłączony" podajesz dwa przebiegi (krzywa1 i krzywa2).
Dla trybu "Charakterystyka + W3 + W5" podajesz trzy przebiegi (Charakterystyka czujnika, Dopasowanie W3, Dopasowanie W5).
Dla trybu "Stały wyprostowany" podajesz dwa... wróć, tak naprawdę trzy! przebiegi (trzeci był "ukryty", dlatego po ustawieniu tego trybu i powrotu do "Wyłączony" wszystko wraca do normy - wyjasnienie jest dalej)
PlotNamesConstant.PNG
PlotNamesConstant.PNG (18.33 KiB) Przejrzano 225 razy
Niestety (dla Ciebie) LabVIEW zapamiętuje nazwy przebiegów w pamięci, nawet jeśli z nich nie korzystasz.
Jeśli dodałeś trzy przebiegi o długiej nazwie, a następnie zmieniłeś tylko dwa pierwsze to LabVIEW będzie dopasowywać się do wszystkich trzech (czyli trzeciego najdłuższego). Chybaa, że po drodze zamkniesz VI...

Tak wyglądają nazwy przebiegów w trybie "Wyłączony" w momecie występowania Twojego problemu:
PlotNamesError.PNG
PlotNamesError.PNG (18.28 KiB) Przejrzano 225 razy
Tak więc musisz kontrolować liczbę przebiegów, które modyfikujesz.
Rozwiązaniem w Twoim przypadku będzie wpisywanie zawsze tej samej liczby przebiegów (czyli 3).
Nadmiarowe nazwy powinny być pustym stringiem.
Po takim zabiegu nazwy będą Ci się zawsze dobrze dopasowywały.
ObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj

apb
Posty: 4
Rejestracja: 20 lis 2017 11:59
Wersja środowiska: LabVIEW 2017

Re: Problem z property node legend autosize

Post autor: apb » 20 lis 2017 15:50

Dziękuję za odpowiedź.

Jak pisałem wcześniej, część programu wyrzuciłem przed wstawieniem.
W trybie "wyłączony" liczba przebiegów zmienia się (program umożliwia m.in. porównywanie wielu powtórzeń z danej serii pomiarowej, dlatego też ilość krzywych nie jest zdefiniowana w Case Structure.
Faktycznie, jeśli w trybie "wyłączony" podam na wejście przetwarzania wykresów minimum 3 przebiegi, wszystko prawidłowo działa.

W momencie, w którym korzystam z funkcji Insert Into Array, dodałem jeszcze tabelę z trzema pustymi wierszami. Obecnie teoretycznie wszystko działa, jednak w przypadku dodawania dużej ilości krzywych, a następnie (w kolejnym uruchomieniu aplikacji) mniejszej ilości, problem wystąpi ponownie.

Czy dobrym sposobem będzie wyzerowanie (ręczne) wszystkich nazw w legendzie, następnie użycie opcji "make current value default" oraz dodanie funkcji invoke node "reinitialize to default" na początku wykonywania programu?

Sprawdziłem, "make current value default", a następnie wykonanie "reinitialize to default", nie ma wpływu na legendę. Wychodzi na to, że jedynym sposobem jest zapamiętywanie ilości krzywych z poprzedniego uruchomienia programu i dopisywanie odpowiedniej ilości pustych wierszy.

Awatar użytkownika
Pitol
Moderator
Posty: 916
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków
Has thanked: 1 time
Been thanked: 7 times

Re: Problem z property node legend autosize

Post autor: Pitol » 20 lis 2017 22:05

"Reinitialize To Default Value" odnosi się tylko do danych wykresu, nie do jego własności.
Tak więc Twoja opcja nie przejdzie.

Zawsze możesz zrobić sobie VI do resetowania nazw przebiegów przed wpisaniem nowych nazw.
PlotNamesReset.PNG
PlotNamesReset.PNG (4.9 KiB) Przejrzano 208 razy
Niestety na tą chwilę nie mam lepszego rozwiązania.
Jak coś wymyślę to się podzielę.
ObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj

apb
Posty: 4
Rejestracja: 20 lis 2017 11:59
Wersja środowiska: LabVIEW 2017

Re: Problem z property node legend autosize

Post autor: apb » 20 lis 2017 23:11

Zrobiłem to tak:
solution.PNG
solution.PNG (3.75 KiB) Przejrzano 204 razy
"LegNumRows" wpiąłem przed przetwarzaniem wykresu, dzięki temu dostaję ilość pozycji legendy. Otrzymaną tablicę dołączam do aktualnie używanej tablicy z nazwami krzywych.

ODPOWIEDZ