Lowlevel
OffZone => Offtopic => Thema gestartet von: etlam am 19. March 2008, 20:17
-
Hallo,
Folgendes Problem:
Ich habe mir eine kleine Funktion gebastelt, welche auf einen Tastendruck warten soll und dann das entsprechende Zeichen zurückgibt.
Dafür gibt es die für Datei kb.c gültige Variablen:
static short keyset = 0;
static char keych;
Wenn eine Taste gedrückt wird, wird keyset auf 1 gesetzt.
Hier ist die Funktion waitkey():
char waitkey()
{
keyset = 0;
while(keyset==0)
{
puts(" \b");
}
return(keych);
}
Das ganze funktioniert komischerweise nur, wenn in der Schleife etwas ausgegeben wird.
Als Notlösung wird jetzt eine Leertaste ausgegeben und dann wieder zurückgegangen.
Wenn ich das puts(" \b"); weggmache, dann kommt die Funktion nicht zum return.
Woran liegt das?
Wo ist mein Denkfehler?
Vielen Dank schonmal im voraus,
etlam
-
static volatile short keyset = 0;
static volatile char keych;
osdev.org: volatile (http://www.osdev.org/wiki/Volatile_(keyword))
-
Vielen Dank!
Jetzt funktionierts.
etlam