Wirtualne Instrumenty i Systemy
Klastry
Dr inż. Witold Nocoń
Clusters
– sposób na grupowanie zmiennych różnych typów
W tekstowych językach programowania istnieją
rekordy
(PASCAL)
lub
struktury (structures)
(in C).
W LabVIEW mamy klastry (
clusters
).
Podobnie jak w przypadku tablic, dwa kroki
w celu utworzenia:
1. Umieścić Zasobnik Klastra
(
Cluster Shell)
na panelu
2. Do zasobnika wstawić potrzebne elementy.
Clusters
– sposób na grupowanie zmiennych różnych typów
Krok pierwszy:
Cluster Shell
Cluster Terminal
Potrzebne elementy
umieszczone wewnątrz
zasobnika klastra
Krok drugi:
Clusters
– sposób na grupowanie zmiennych różnych typów
Klaster (jako całość) może być albo kontrolką albo wyświetlaczem
Cluster control:
Cluster indicator:
Clusters
– na diagramie
Aby uzyskać składowe klastra należy „rozpleść”
(unbundle)
przewód:
Funkcja unbundle jest
polimorficzna
- jej wygląd zmienia się w zależności
od składowych klastra.
Poszczególne elementy mogą być wyprowadzone
Clusters
– na diagramie
Zauważ, że elementy klastra są uporządkowane w kolejność. To
uporządkowanie
jest niezależne od położenia
elementu wewnątrz
klastra.
Domyślnie, kolejność odpowiada kolejności wstawiania
elementów do zasobnika.
Aby zmienić kolejność, należy z
menu podręcznego klastra wybrać
Reorder Controls in Cluster...
Clusters
– na diagramie
Aby stworzyć klaster na diagramie, należy „spleść” przewody (boundle) :
bundle
UWAGA
: W powyższym przykładzie łatwo popełnić błąd
polegający na niezauważonym przestawieniu kolejności
zmiennych – co może nie doprowadzić do błędu w czasie
kompilacji
Clusters
– na diagramie
Podmiana elementów klastra
• zmienne których wartości nie zostaną połączone, nie ulegną
zmianie
Nie trzeba splatać z powrotem wszystkich wartości
Clusters
– na diagramie
Warto korzystać z funkcji „splatania przez nazwę”, co zapobiega
pomyłkom związanym z zamianą wartości tych samych typów
Bundle by Name
– nazwa zmiennej używana jako identyfikator
zmiennej
Funkcja ta daje się powiększać. Daje też możliwość
wyboru wejść (z których każde musi być połączone)
Clusters
– na diagramie
Unbundle by Name
– umożliwia rozplatanie przy użyciu nazwy
zmiennej jako identyfikatora.
Wyświetlane są tylko wybrane przez programistę elementy.
Nazwy zmiennych powinny być mądrze nazywane – ułatwi
to poruszanie się w programie.
Przykład (nie robiący niczego szczególnego): pro_05_01.vi.
XY Graphs
– teraz się wszystko wyjaśni
Po umieszczeniu XY Graph’a na panelu...
... na diagramie pojawi się terminal
klastra.
Terminal przyjmuje klaster
dwóch wektorów (wektor X
oraz wektor Y):
lub tablicę klastrów wektorów (w
przypadku większej liczby
wykresów):
Przykład: pro_05_02.vi.
Clusters
– dwie przydatne funkcje
Array To Cluster:
Zamienia tablicę 1D na klaster elementów typu elementów
tablic.Przydatne, jeśli chcemy wyświetlić elementy tablica jako
klaster, ale mieć możliwość operowania na nim jak na tablicy
Menu podręczne funkcji umożliwia określenie wielkości klastra
(Cluster Size). Domyślnie 9, maksymalnie 256
Clusters
– dwie przydatne funkcje
Cluster To Array:
Zamiana klastra na tablicę elementów klastra
• Składowymi klastra (
cluster)
nie mogą być tablice.
• Elementy klastra muszą być tego samego typu (dokładnie)
Krótki przykład: pro_05_03.vi.
Przykład – z leksza bardziej zaawansowany - przedsmak przyszłego semestru:
Używając dynamicznie ładowanych funkcji (w dowolnej ilości), potrzebny jest
kontener
w którym
przechowywane będą referencja do wszystkich
załadowanych funkcji
.
Dynamiczne ładowanie funkcji omówimy później (przyszły semestr?).
To co zrobimy teraz to
tablica o zmiennym rozmiarze, zawierająca klastry
.
Klastry zawierać będą dane (nie ważne jakie)
Zapewnić jednak musimy mechanizm, wstawiania nowych klastrów do
kontenera, usuwanie istniejący klastrów z kontenera oraz edytowanie danych
już w kontenerze się znajdujących.
Trzeba też jednoznacznie identyfikować elementy. W tym celu należy
każdemu nowemu elementowi nadać niepowtarzalny
number referencyjny.
Numer ten odróżniał będzie elementy od innych elementów
Rozwiązanie: pro_05_04.vi.