while-schleife beenden
-
Hallo,
ich habe folgendes Problem:
ich steuere über die serielle Schnittstelle einen Mikroprozessor an.
Durch ein Ereignis an der seriellen Schnittstelle möchte ich die while-Schleife beenden.
Ich habe dazu folgenden Code geschrieben:while(m_commMSComm1Strg.GetCommEvent()!=comEvReceive) { i++; sprintf(Ablage6, "%u", i); MessageBox(Ablage6); }
Die MessageBox gibt immer den aktuellen Zaehlerwert aus.
Mein Problem ist jetzt, dass ich die MessageBox nur zur Überprüfung eingebaut habe und ich sie wieder auskommentieren wollte, aber genau dann wird
die Schleife trotz Ereignis am Comport nicht mehr beendet.
Wieso und wie kann ich auch ohne MessageBox die schleife beenden???mfg !programmer
-
1. Mach mal ne Überprüfung mit TRACE statt der Messagebox.
2. Kann das ein Timingproblem sein?
-
MessageBox verarbeitet intern anstehende Windows-Nachrichten. Kann es daran liegen?
-
hm, das muss irgendetwas mit der messagebox zu tun haben.
ohne die messagebox erkennt der den "interrupt" nicht und zählt bis unendlich...
-
damit die msg-queue in der schleife weiterläuft, guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_idle_loop_processing.asp
vielleicht hilft's
-
ich habe das ganze folgendermaßen gelöst:
while(m_commMSComm1Strg.GetCommEvent()!=comEvReceive) { PumpMessages(); } void CDeinDlg::PumpMessages() { ASSERT(GetSafeHwnd() != NULL); MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (!IsDialogMessage(&msg)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } }