Obsługa klawiatury

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
Pavels
Posty: 5
Rejestracja: 09 sie 2013 00:19
Wersja środowiska: LabVIEW 2012

Obsługa klawiatury

Post autor: Pavels »

Witam,

Muszę zrobić aplikację która obsługuje silniki krokowe, jedną z jej części ma być obszar w którym będzie można za pomocą strzałek z klawiatury: Up, Down, Left, Right sterować ich ruchem. Mógłbym mi ktoś doradzić jak mam zrealizować obsługę tych klawiszy?
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Obsługa klawiatury

Post autor: smiga »

Po prostu obsłuż Event Key Down - załączony prosty przykład:
Załączniki
up.vi
(9.36 KiB) Pobrany 599 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pavels
Posty: 5
Rejestracja: 09 sie 2013 00:19
Wersja środowiska: LabVIEW 2012

Obsługa klawiatury

Post autor: Pavels »

W jakim celu zostało dodane pole VKey?
Pavels
Posty: 5
Rejestracja: 09 sie 2013 00:19
Wersja środowiska: LabVIEW 2012

Obsługa klawiatury

Post autor: Pavels »

VKey przechowuje stan klawiszy, czyli jeśli wcisnę klawisz Up będzie to dla niego widoczne. Dobrze to rozumiem? Mam jeszcze pytanie: w którym miejscu mogę nadać np. klawiszowi Up (chodzi mi o strzałkę w górę) czynność która będzie realizowana po jego naciśnięciu? Konkretnie chodzi o to aby po naciśnięciu strzałki na klawiaturze silnik jechał w górę po osi Y.
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Obsługa klawiatury

Post autor: smiga »

Zerknij na poniższy kod - może będzie łatwiej:
Załączniki
up.vi
(11.81 KiB) Pobrany 545 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pavels
Posty: 5
Rejestracja: 09 sie 2013 00:19
Wersja środowiska: LabVIEW 2012

Re: Obsługa klawiatury

Post autor: Pavels »

Zrealizowałem to w ten sposób. Jednak chodzi mi w którym miejscu mógłbym nadac każdym z tych 4 klawiszy operacje jakie mają byc wykonane po ich naciśnięciu?
Załączniki
sterowanie.jpg
sterowanie.jpg (34.33 KiB) Przejrzano 16460 razy
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Obsługa klawiatury

Post autor: smiga »

Możesz to zrobić po wyjściu ze struktury Event w pętli While, jeżeli operacje nie są czasochłonne, a program jest prosty.
Jeżeli chcesz to zrobić bardziej elegancko, to polecam architekturę producent/konsument z Event'em - pętla producenta z Event'em generuje dane dla konsumenta, czyli po naciśnięciu klawisza "Up" wysyłasz do konsumenta polecenie (Ty decydujesz jak wygląda ... może to być nawet string "Up", który po stronie konsumenta wywoła odpowiedni Case -"Up"), które konsument odpowiednio wykorzysta - np. uruchomi silnik.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
cmarcin19
Posty: 3
Rejestracja: 20 sty 2015 01:59
Wersja środowiska: LabVIEW 2014

Obsługa klawiatury

Post autor: cmarcin19 »

Witam,
również mam problem z obsługą klawiatury, dlatego pozwolę sobie podpiąć się pod tym tematem.
W załączonym pliku robię zamek szyfrowy, dodałem obsługę klawiatury, żeby można było wpisać kod za jej pomocą.
Klawisze są interpretowane poprawnie, lecz wartości nie są wpisywane do kolejnego bloczku jakim jest index array.
Kolejnym problemem jest to, że program nie chce się poprawnie wyłączyć, jakby któraś pętla go blokowała....
Ma ktoś może pomysł jak rozwiązać te problemy?
Z góry dziękuję
Marcin
Załączniki
Zamek_szyfrowy2.vi
(26.61 KiB) Pobrany 420 razy
SNT
Posty: 56
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Obsługa klawiatury

Post autor: SNT »

cmarcin19 mógłbyś to wrzucić w wersji 2013?
cmarcin19
Posty: 3
Rejestracja: 20 sty 2015 01:59
Wersja środowiska: LabVIEW 2014

Obsługa klawiatury

Post autor: cmarcin19 »

Oczywiście, już wrzucam dla wersji 13.0
Załączniki
Zamek_szyfrowy2.vi
(18.14 KiB) Pobrany 405 razy
SNT
Posty: 56
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Obsługa klawiatury

Post autor: SNT »

Masz potrójnie zagnieżdżone pętle while i do tego równolegle działający event w pętli while bez stopu. Powidz co chesz mniej więcej osiągnąć?
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Re: Obsługa klawiatury

Post autor: koofaya »

Problemem jest sama architektura, która wykazuje kardynalne błędy.
Wymienię tylko 2, ale najważniejsze:
- dwie pętle z dwoma osobnymi przyciskami stop
- zastosowanie zmiennych, czego przeważnie da się całkowicie uniknąć.

Ja myślę, że da się to zrobić w jednej pętli z jedną strukturą event w środku. Tak byłoby najprościej. Może ona reagować zarówno na klawisze klawiatury, jak i na zmiany wartości clustra z front panelu. Przycisk stop też jest wtedy jednym z eventów.
Alternatywa to architektura master/slave lub producer/consumer, do której template jest w menu startowym LabVIEW.
Jest jeszcze opcja z 2 pętlami, w której jedna czeka na event, a druga jest przez ten event wyzwalana. Działa to praktycznie tak, jak notifier, ale nie można przekazywać w ten sposób danych. Ja nigdy z tego podejścia nie korzystałem.
cmarcin19
Posty: 3
Rejestracja: 20 sty 2015 01:59
Wersja środowiska: LabVIEW 2014

Obsługa klawiatury

Post autor: cmarcin19 »

Dziękuję koofaya. Problem z pętlami i wyłączeniem już udało mi się rozwiązać, lecz pozostaje klawiatura. SNT chciałbym, żeby wciskanie cyfry na klawiaturze powodowało wpisanie kodu do zamka szyfrowego, bo jak narazie dzieję się to tylko przy użyciu myszki i przycisków w clastrze.
SNT
Posty: 56
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Re: Obsługa klawiatury

Post autor: SNT »

Tak na szybko, resztę musisz zrobić sam.
Zauważyłem, że w klastrze był jeszcze jeden przycisk bool więc go usunąłem.
Załączniki
Zamek_szyfrowy2v2.vi
(24.03 KiB) Pobrany 428 razy
ODPOWIEDZ