Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

while (TRUE)

Danni_KA / 3 Antworten / Flachansicht Nickles

Hallo, habe leider ein Problem mit meinen Programmierkentnissen in MFC Visual C++. Ich habe eine while schleife laufen, in der ständig von der seriellen schnittstelle Daten abgefragt werden! Leider kann ich die Schleife nicht durch einfache Eingabe der escape-Taste oder einer beliebigen Taste verlassen. Das Programm rennt die ganze Zeit durch die schleife und lässt mir keine Möglichkeit die Ergebnisse anzuzeigen, bzw. die Schleife abzubrechen! Weiß jemand wie man das am einfachsten bewerkstelligen kann, das bei Tastendruck die Schleife beendet?


Vielen Dank und frohes Fest ;)

bei Antwort benachrichtigen
Andreas42 Danni_KA „while (TRUE)“
Optionen

Hi!

Das ist weniger ein Problem des Abbrechens, hier ist der ganze Ansatz nicht optimal.

Wenn du mit modernen Entwicklungsumgebungen arbeitest, musst du dich von der klassischen Programmierung mit ihren Schleifen lösen. In modernen objektorientierten Umgebungen wird auch ereignisorientiert gearbeitet.

Soll bedeuten, man schreibt Routinen, die automatisch aufgerufen werden (sie sind mit einem ereignis verbunden und werden dann aufgerufen, wenn dieses Ereignis eintritt). In solchen Routinen sollte man auf Schleifen ohne feste Abbruchbedingung verzichten, dam man damit die Bearbeitungskette der Ereignisse unterbricht.

Zurück zu deinem Problem: die serielle Schnittstelle hat einen eingebauten Puffer, der einige Zeichen halten kann, bevor sie überläuft. Evtl. kann man diesen Puffer soagr vergrössern, ich weiss dass gar nicht so genau.

Ich schreibe das, weil damit auch klar wird, dass man das Auslesen von Zeichen an der seriellen Schnittstelle durchaus unterbrechen kann.
Aber eigentlich muss man unter Win32 sich gar keine Gedanken um zeichenweises Abfragen der seriellen Schnittstelle machen. Dazu gibt's fertige DLLs und COM-Objekte.

Ein Link zu den Grundlagen findest du hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp

Andere Hilfen lassen sich mit Google aufstöbern:
http://www.google.de/search?hl=de&q=visual+c%2B%2B+serial+port&btnG=Google-Suche&meta=

Bis dann
Andreas

Ich würde die Auslessfunktion an einen Interupt hängen und dann zyklisch auslösen lassen. Falls dann Zeichen anliegen.

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen