Strona 1 z 1
Obsługa klawiatury
: 09 sie 2013 00:23
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?
Re: Obsługa klawiatury
: 09 sie 2013 02:14
autor: smiga
Po prostu obsłuż Event Key Down - załączony prosty przykład:
Obsługa klawiatury
: 09 sie 2013 10:07
autor: Pavels
W jakim celu zostało dodane pole VKey?
Obsługa klawiatury
: 09 sie 2013 11:35
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.
Re: Obsługa klawiatury
: 09 sie 2013 11:56
autor: smiga
Zerknij na poniższy kod - może będzie łatwiej:
Re: Obsługa klawiatury
: 09 sie 2013 12:34
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?
Re: Obsługa klawiatury
: 09 sie 2013 13:45
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.
Obsługa klawiatury
: 20 sty 2015 02:16
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
Obsługa klawiatury
: 20 sty 2015 07:17
autor: SNT
cmarcin19 mógłbyś to wrzucić w wersji 2013?
Obsługa klawiatury
: 20 sty 2015 10:45
autor: cmarcin19
Oczywiście, już wrzucam dla wersji 13.0
Obsługa klawiatury
: 20 sty 2015 11:36
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ąć?
Re: Obsługa klawiatury
: 20 sty 2015 11:44
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.
Obsługa klawiatury
: 20 sty 2015 22:06
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.
Re: Obsługa klawiatury
: 21 sty 2015 08:02
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.