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.

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t31fcfok41v721r7h963.png
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.

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t3bucq9sk8i1f871sdo4.png
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.

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t41rtsdi3vpv18lg1t3s5.png
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.

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t41ku1et21qq8193i3hl6.png
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).

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t4i8u1t1gakk1bevhj17.png
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.

http://www.student.mvlab.pl/wiedza/img/m/2/t/p17voev9t4p5q1od71l14jef1tss8.png
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.

Załączniki posta

Klawiatura.vi 16.29 kB, 634 pobrań od 2013-07-18