Lowlevel

OffZone => Offtopic => Thema gestartet von: etlam am 19. March 2008, 20:17

Titel: waitkey() funktioniert nur bei Ausgabe?
Beitrag 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
Titel: Re: waitkey() funktioniert nur bei Ausgabe?
Beitrag von: bluecode am 20. March 2008, 10:26
static volatile short keyset = 0;
static volatile char keych;

osdev.org: volatile (http://www.osdev.org/wiki/Volatile_(keyword))
Titel: Re: waitkey() funktioniert nur bei Ausgabe?
Beitrag von: etlam am 21. March 2008, 14:04
Vielen Dank!
Jetzt funktionierts.

etlam