wince auf input warten *** gelöst ***
-
Hallo Leute,
wenn ich in einer Windows CE Applikation mit scanf auf eine Konsoleneingabe warte verbraucht er zu viel Rechenzeit, da anscheinen scanf kein sleep intern hat.
Gibt es eine Möglichkeit mit WaitForSingleObject auf ein event zu warten ob ein Zeichen auf dem stdin ist, da GetStdHandle auch nicht verfügbar ist in CE?
MfG
-
Entscheide dich für WinApi oder die C Standard Library.
Verschiedene Implementierungen von ähnlicher Funktionalität
(z.B. inputbox und scanf) stören sich oft gegenseitig.
Die WinApi nimmt auf die Befindlichkeiten von deinem Scanf offenbar
keine Rücksicht, was dann zu solchen Problemen führt.
-
also bei der Lösung reagiert der nicht auf mein 'e'
#define STDIN 0 FD_ZERO(&fds); FD_SET(STDIN, &fds); select(0, &fds, NULL, NULL, &tv); if (FD_ISSET(STDIN, &fds)) { iChar = _gettchar(); if ((EOF == iChar) || ('e' == iChar)) bExit = true; }
ich weiß aber nicht warum.
-
Windows CE hat keine asynchrone IO Behandlung und select() funktioniert nur mit Sockets. Aber eigentlich sollte ein ReadFile() blockieren, bis eine Eingabe erfolgt ist.
Du kannst mit GetStdioPathW() an den Gerätenamen der Konsolen kommen und diese dann per CreateFile() öffnen.
Falls es also nur ein Problem der scanf() Implementierung ist, kannst du dir die Daten selbst zusammenpuffern und sscanf() benutzenIch habe aber damit auch keine Erfahrung, denn da viele CE Derivate gar keine
Konsole unterstützen, habe ich nie in diese Richtung portiert.
-
also es ist so als gibt getchar, als alternative zu scanf, die Rechenzeit ab. Damit ist das Problem gelöst.
MfG