Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » KeyRelease in C?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.05.2007, 18:44 Uhr
VirusSE



Ich habe ein kleines Consolenprogramm welches unter Windoof laufen soll. Meine Aufgabe ist es über den Zeitgeberschaltkreis 8253 (hat jeder IBM-PC) eine Art Keyboard (Musikinstrument) zu programmieren. Soweit kein Problem.
Allerdings habe ich ein Problem so eine Art
Code:
REPEAT UNTIL(keypressed);
zu programmieren. Also quasi, solange man eine Taste auf der Tastatur drückt, wird der Ton gespielt. Beim loslassen, soll der Schaltkreis wieder stumm geschaltet werden.

Meine Variante:

C++:
while (_kbhit())
{
_getch();
}



Funktioniert irgendwie nur bei einem Durchlauf. Also er merkt einmal, dass eine Taste gedrückt wird, liest diese aus und springt aus der Schleife. Ohne _getch() läufts auch nur einmal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.05.2007, 19:06 Uhr
Oliver
S2-Pixelgeneral


Also so richtig hab ich nicht kapiert, was du machen willst. Kannst du nochmal konkret sagen, was dein Problem ist?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.05.2007, 19:17 Uhr
VirusSE



Kurz: Ich will das Programm pausieren lassen, solange eine Taste gedrückt ist. Aber irgendwie bin ich zu dumm dazu.
Dieser Post wurde am 09.05.2007 um 19:40 Uhr von VirusSE editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.05.2007, 19:57 Uhr
Oliver
S2-Pixelgeneral


Was meinst du mit "Pausieren"? Soll er dann solange in der Endlosschleife hängen bis, eine Taste gedrückt wurde? Wofür soll das _getch(); dann sein? Evtl. mal GetAsyncKeystate probieren, musst dann aber ne bestimmte Taste nehmen...
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.05.2007, 20:46 Uhr
VirusSE



Naja ich habe gedacht, das _kbhit() aufgrund das es nach einem Schleifendurchlauf abbricht, vielleicht so schlau ist und erkennt, das es zweimal hintereinander aufgerufen wurde, ohne das der Tastaturpuffer ausgelesen wurde. Ok ist vielleicht a bissl um die Ecke gedacht. Mit _getch() wollte ich einfach nur das Zeichen lesen.
Also das Programm funktioniert so das ich den Baustein programmiere und er dann einen Ton ausgibt. Programmiert wird er, wenn ich die Taste C drücke. Nun soll solange die Taste C gedrückt bleibt nichts passieren. Erst wenn C losgelassen wird, soll der Baustein wieder abgeschaltet werden.
Das schalten und walten hab ich nur ich kriegs nicht auf die Reihe mit dem "C-loslassen". Sry für die komplizierte Erklärung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.05.2007, 14:01 Uhr
Suba Esel



Falls du im Prinzip so etwas meinst:


C++:
#include <windows.h>
// Code
while(1)
{
     if(GetAsyncKeyState('c') || GetAsyncKeyState('C'))
     {
          // Programmieren
          while(GetAsyncKeyState('c') || GetAsyncKeyState('C'))
          Sleep(5);
          // abschalten
     }
     Sleep(5);
}



Wenn du jetzt "c" oder "C" drückst, so wird der Baustein programmiert. Dann läuft die innere Schleife solange, wie du gedrückt hältst, sobald du loslässt, wird der Baustein abgeschaltet und die äußere Schleife läuft weiter. Die Sleep(5) bewirken, dass du nicht 100% CPU - Auslastung hast.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.05.2007, 15:29 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


mach nach dem getch mal ein fflush(stdin); dann sollte deine Schleife funktionieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: