Temat: LabVIEW - klawiatura ekranowa z wykorzystaniem referencji
Klawiatura ekranowa może przydać się w sytuacji, gdy program potrzebuje nawiązać interakcję z użytkownikiem, a do dyspozycji mamy jedynie ekran dotykowy.
Oprogramowanie klawiatury ekranowej zaczniemy od panelu frontowego.
Rysunek 1 Panel frontowy klawiatury ekranowej
Na panelu frontowym umieszczamy 10 przycisków, odpowiadających cyfrom 0-9, przycisk OK oraz Cancel. Każdemu z przycisków nadajemy etykietę (Label) odpowiadającą jego funkcji, następnie tę etykietę chowamy. Dla przycisków odpowiadających cyfrom ustawiamy odpowiedni Boolean Text (tekst wyświetlany na przycisku), przyciski OK i Cancel pozostawiamy bez tekstu. Jako mechaniczną akcję dla każdego z przycisków wybieramy Switch Until Released.
Nad przyciskami umieszczamy wyświetlacz tekstowy String Indicator.
Do oprogramowania zachowania klawiatury skorzystamy ze struktury zdarzeniowej, czyli pętli while ze strukturą Event.
Przechowywany w kontrolce String aktualny napis (początkowo zainicjalizowany pustym stringiem), przesyłamy pomiędzy każdą z iteracji pętli za pomocą mechanizmu rejestru przesuwnego.
Kliknięcie przycisku OK powoduje zakończenie działania programu, bez wpływu na zawartość kontrolki String.
Rysunek 2 Zdarzenie dla przycisku OK
Kliknięcie przycisku Cancel również powoduje zakończenie działania programu, ale do kontrolki String przesyłany jest w tej sytuacji pusty napis.
Rysunek 3 Zdarzenie dla przycisku Cancel
Podczas klikania któregokolwiek z przycisków z numerami, do aktualnej zawartości kontrolki String powinien zostać dopisany znak odpowiedni dla danego przycisku.
Rysunek 4 Obsługa przycisku "1"
Rozwiązanie takie jak powyższe, jest jednak nieefektywne, ponieważ wymaga od nas utworzenia osobnego przypadku zdarzeniowego dla każdego z przycisków, co w efekcie da 10 przypadków o bardzo podobnej zawartości diagramu blokowego, a w przypadku obsługi pełnej klawiatury alfanumerycznej diagramów tych będzie o wiele więcej.
W środowisku LabVIEW, oprócz informacji o tym, że zaszło określone zdarzenie, mamy do dyspozycji również wiele dodatkowych, szczegółowych parametrów tego zdarzenia. Parametry te dostępne są w strukturze Event Data Node, znajdującej się przy lewej krawędzi struktury Event.
Jednym z dostępnych parametrów jest referencja do kontrolki, która wywołała dane zdarzenie (CtrRef). Wykorzystując tę referencję, możemy za pomocą bloczka Property Node, dostać się do dowolnej właściwości kontrolki, a więc również do tekstu, jaki się na niej znajduje (właściwość Boolean Text -> Text).
Rysunek 5 Obsługa przycisku "1" z wykorzystaniem referencji
Dzięki takiemu rozwiązaniu, nie ma potrzeby tworzenia dodatkowych diagramów dla każdego z przycisków osobno, wystarczy natomiast skonfigurować zdarzenie dla przycisku „1” tak, aby było wywoływane również w momencie naciśnięcia któregokolwiek z pozostałych przycisków numerycznych. W tym celu klikamy prawym przyciskiem myszy na nagłówku struktury Event i wybieramy opcję Edit Events Handled by This Case…
Następnie do listy zdarzeń dodajemy zdarzenie Mouse Up dla każdego z pozostałych przycisków 0-9.
Jeżeli opracowaną w ten sposób klawiaturę numeryczną chcemy wykorzystać w innym programie, ostatnią z niezbędnych do tego czynności jest podpięcie kontrolki String do jednego z wyjść bloczka, aby umożliwić przesłanie wpisanego przez użytkownika napisu na zewnątrz.
Rysunek 6 Konfiguracja zdarzeń obsługi przycisków "0" - "9"
Propozycje ćwiczeń i modyfikacji
1. W parametrach programu (Menu File -> VI Properties) ustawić opcję wyglądu okienka (Window Apperance) na okno modalne. Skonfigurować pozostałe opcje wyglądu okna tak, aby nie zawierało pasków przewijania oraz górnego menu. Tak przygotowany VI wykorzystać w innym programie do wprowadzenia przez użytkownika danych liczbowych. Klawiatura ekranowa powinna zostać wywołana po kliknięciu w wejściową kontrolkę numeryczną.
2. Dodać do klawiatury możliwość wprowadzania liczb rzeczywistych z zabezpieczeniem przed wielokrotnym wpisaniem znaku separatora dziesiętnego.
3. Dodać do klawiatury przycisk „BACKSPACE”, kasujący ostatni wpisany znak.
4. Dodać do klawiatury przycisk ±, umożliwiający określenie znaku wpisywanej liczby na każdym etapie jej wprowadzania.