WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Keyboard abfragen

 

Poseidonius
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 08.07.07
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 20.03.2009, 13:10     Titel: Keyboard abfragen
  Antworten mit Zitat      
Hi,

kann ich ohne eine GUI einzubinden nichtblockierend prüfen ob Eingaben über die Tastatur erfolgt sind.

Es soll zum Beispiel innerhalb einer Schleife getestet werden ob ein "S" gedrückt wurde. Wenn ja, dann wird die Schleife abgebrochen und das Programm weitergeführt, wenn nein, läuft die Schleife eben weiter.

Eine Idee?

Poseidonius
Private Nachricht senden Benutzer-Profile anzeigen


noya
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 11:34     Titel:
  Antworten mit Zitat      
Ich habe ein ganz ähnliches Problem. Ich programmiere im Moment ein Experiment, bei dem für je 2s ein Wort präsentiert wird. Bei bestimmten Wörtern soll die Leertaste gedrückt werden, bei anderen nicht. Dabei ist es wichtig, dass die For-Schleife, die ich zur Präsentation dieser Wörter verwende, immer weiterläuft, egal ob die Leertaste gedrückt wurde oder nicht.

Ich verwende die Psychophysics-Toolbox (PTB) 3 und habe es daher bereits mit KbCheck versucht, das aber aus einem mir unbekannten Grund nicht funktioniert (d. h. ich kann Tasten drücken soviel ich will, es wird nicht registriert). Da ich im Fullscreen-Modus mit der PTB 3 arbeite, kann ich keine GUI-Figure verwenden, daher fallen GetKey und GetKeyWait leider weg.

Hat jemand von euch vielleicht eine Idee, wie man das umsetzen könnte?

Vielen Dank schon jetzt für eure Hilfe!

Viele Grüsse,
noya
Private Nachricht senden Benutzer-Profile anzeigen
 
Poseidonius
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 08.07.07
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 30.06.2009, 16:44     Titel: Tastatureingaben erfassen
  Antworten mit Zitat      
Erstaunlich was es alles für Toolboxen gibt Smile

Was Du vor hast, lässt sich mit einem timer Object umsetzen, dass alle 2 Sekunden einen neuen Schriftzug präsentiert. Daneben können dann im "Hauptskript" die Tastatureingaben abgefangen werden.

Grüße

Poseidonius
Private Nachricht senden Benutzer-Profile anzeigen
 
noya
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 21.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2009, 16:51     Titel:
  Antworten mit Zitat      
Vielen Dank für den interessanten Tipp, das werde ich mir gleich mal genauer anschauen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Ion Ion

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2009, 18:03     Titel: ...keyPress function
  Antworten mit Zitat      
Vorschlag:

1.: KeyPressFcn fuer deine Figure: mit callback @n2

Code:
figure('Color', 'black', 'MenuBar','none' , 'ToolBar','none',...
    'NumberTitle','off', 'KeyPressFcn',@n2);


2.: Folgende KeyPress Function @n2:

Code:
function [NowSelected] = n2(src,evnt)
    if evnt.Character == '1'
        % was du willst #1
    elseif x == 'lefta'
        % was du willst #1
    elseif evnt.Character == '2'
        % was du willst #2
    elseif x == 'right'    
        % was du willst #2    
    end


Gruesse

IonIon / Georg
 
Poseidonius
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 08.07.07
Wohnort: Magdeburg
Version: ---
     Beitrag Verfasst am: 18.07.2009, 02:37     Titel: Keyboardabfrage
  Antworten mit Zitat      
Hallo zusammen,

mir gefiel die Lösung über ein verstecktes Figure nicht ... Smile

deshalb habe ich 2 kleine C Programme geschrieben und in ein Testbeispiel eingebunden, dass eine Endlosschleife nach Linksklick und Ctrl Taste unterbricht.

Wenn man unter "Virtual-Key Codes" sucht findet man eine Tabelle, die definiert, dass "1" eben ein Klick der linken Maustaste ist und ...

Zum compilieren einfach
Code:

mex keyPressed.c
mex keyBoardInit.c
 

eingeben.


Code:

home
clear
keyBoardInit;
i=0;
aux=0;
fprintf('Running infinite loop and waiting for ''Left Click'' or ''Ctrl'' ...\n\n')
while (1)
    %% Loop
    pause(0.2)
    fprintf('#')
    i=i+1;
    if i>15
        i=0;
        fprintf('\n')
    end
    %% Check for Keyboard inputs
    aux=keyPressed();
    if aux~=0
        i=0;    
        fprintf('\nWINDOWS virtual key %i pressed\n',aux  )
        if aux==1
            fprintf('\nLeft Click registered !\n');
            break
        end
        if aux==17
            fprintf('\nCtrl Button pressed !\n');
            break
        end
    end
end
disp('Aus Maus ')


Das ganze funktioniert leider nur unter Windows, da die Tastaturabfragen betriebssystemspezifisch sind und die windows.h brauchen. Vielleicht hat jemand Lust es zu verbessern (kenn mich mit C nicht so gut aus) und eine Linux Anpassung vorzunehmen.

keyPressed.c
 Beschreibung:

Download
 Dateiname:  keyPressed.c
 Dateigröße:  570 Bytes
 Heruntergeladen:  673 mal
keyBoardInit.c
 Beschreibung:

Download
 Dateiname:  keyBoardInit.c
 Dateigröße:  359 Bytes
 Heruntergeladen:  656 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.