CLSCR and endless-Loop (C++ and WINCE)
-
Hallo Leute!
Ich habe zwei "kleine" Probleme und hoffe hier einen oder mehrere schlaue Köpfe zu finden

Zu erst zu meinem Aufbau einige Infos:
Ich schreibe auf meinem Notebook (Microsoft eMbedded Visual C++) ein Programm (C++) und lade danach das Programm auf ein externes Gerät mit WinCE. Da arbeite ich mit der CMD-Konsole (Datenausgabe).Nun habe ich folgende Probleme...
1. Wie löscht man mit C++ auf Win CE den gesamten Konsoleninhalt? So quasi mit clscr(); aber nun für Win CE, da dieser Befehl hier nicht funzt!?!?
2. Ich habe eine Endlosschlaufe programmiert, welche jede Sekunde Daten ausgiebt. Wie kann ich diese Endlosschlaufe mit einem Tastendruck (Q) unterbrechen?? Das Problem ist, wenn ich mit "scanf" arbeite, da meine Datenausgabe unterbrochen/angehalten wird...
while(1) //endless loop { printf("%i\n", pReportSens1); Sleep(1000); }Ich würde mich auf informationsreiche Antworten freuen...
Freunliche Grüsse
Kevin
-
KevinKuske schrieb:
2. Ich habe eine Endlosschlaufe programmiert, welche jede Sekunde Daten ausgiebt. Wie kann ich diese Endlosschlaufe mit einem Tastendruck (Q) unterbrechen?? Das Problem ist, wenn ich mit "scanf" arbeite, da meine Datenausgabe unterbrochen/angehalten wird...
Du kannst z.B. mit _kbhit arbeiten, so dass die Schleife unterbrochen wird, sobald irgendeine Taste gedrückt wird.
while(!_kbhit()) { /*...*/ }Wenn du nur bei "q" ein Beenden der Schleife willst, kannst du das glaube ich so in etwa machen:
while(1) { if(_kbhit()) { char c=_getch(); if(c=="q" || c=="Q") { break; } } //mache was... }Da bin ich mir nicht ganz sicher. Musst du mal ausprobieren.
EDIT: Welche dieser Funktionen auf WinCE verfügbar sind oder nicht, weiß ich leider nicht...
-
Hallo _matze
Vielen Dank für Deine Antwort!
Leider funktioniert _kbhit nicht. Wie finde ich den passenden Befehl zu WinCE?Gruss
Kevin
-
KevinKuske schrieb:
Hallo _matze
Vielen Dank für Deine Antwort!
Leider funktioniert _kbhit nicht. Wie finde ich den passenden Befehl zu WinCE?Gruss
KevinDen Header conio.h hast du auch eingebunden? kbhit und _kbhit gibt's nicht? Tut mir leid, eine Alternative in reinem C++ kenne ich nicht.
Die WinAPI bietet dir noch GetAsyncKeyState. Probier mal dieses Beispiel aus:
#include <iostream> #include <windows.h> using namespace std; int main() { char c; long long i=0; for(;;) { cout << i++ << endl; if(GetAsyncKeyState(VK_ESCAPE)) { break; } } cout << "Escape wurde gedrueckt!" << endl; getchar(); }Wie es da unter WinCE aussieht, kann ich dir natürlich nicht sagen...
EDIT:
Die Virtual Key Codes: http://msdn.microsoft.com/en-us/library/ms645540.aspx
-
if(GetAsyncKeyState(VK_ESCAPE)) { break; }Das sieht danach aus, also wären diese Zeilen genau das, was ich die ganze Zeit suche! Auch erscheint keine Fehlermeldung, doch sie funktioniert leider nicht, sprich in der Schleife reagiert das Programm nicht auf die Betätigung der Esc-Taste. Ich denke, es liegt daran, dass irgend ein Headerfile fehlt (welches ich evtl. nicht einbinden kann; siehe unten).
kbhit sowie auch _kbhit ist unmöglich sowie auch das Einbinden von conio.h (error...).
Wenn ich dein Code 1zu1 kopiere erscheinen bei mir ix Fehlermeldungen. Nur diese oben gezeigte Programmzeile funktioniert, was allerdings reichen sollte für mich. #include <iostream> funzt auch nicht...
-
PROBLEM GELÖST!
Das Problem war folgendes...
Ich arbeitete die ganze Zeit über eine virtuelle Tastatur!
Deshalb reagierte das Programm nicht, da dieser Befehl einen Input über die Hardware benötigt (PS2 oder USB).
Nun verwendete ich eine "reale" Tastatur und nun geht alles wie es soll!Vielen Dank für deine Hilfe!
Gruss
Kevin
-
Schön, dass es letztlich funktioniert hat! Vielleicht findest du hier ja doch noch eine Methode, um auch die simulierten Tastendrücke mitzubekommen:
http://msdn.microsoft.com/de-de/library/ms645530(en-us,VS.85).aspx