Hallo, ich möchte ein Windows-Programm schreiben, das auf den Eingang von Zeichen an der seriellen Schnittstele wartet und diese Zeichen dann in einem Feld anzeigt. Dafür soll möglichst weitgehend die Windows-API verwendet werden. Ausserdem soll das Auslesen der Zeichen interruptgesteuert und nicht durch einfaches Polling funktionieren. Die Daten kommen in unregelmässigen Abständen von einem externen Mikroprozessor, Im Programm soll man ausserdem Baudrate und andere Schnittstellenparameter (Parity, etc.) über ein Menü einstellen können. Hat jemand ev. Demo-Code und Tips ? Ich habe Erfahrung mit C und C++, aber noch wenig Erfahrung mit Windows-Programmierung (will mich aber einarbeiten und dieses Projekt ist auch dafür gedacht).
Du weißt, daß es sowas schon fertig gibt? Nennt sich Terminal-Programm, für Windows wären das z. B. Hyperterm, Terterm, CRT, Bray-Terminal.
Schon klar, aber die eingehenden Daten kommen byteweise in Blöcken und müssen wieder zu sinnvollen Werten zusammengesetzt werden.
Ah, verstehe. Suche mal hier im Forum, das Thema gabs schon sehr oft. Dann bei msdn.microsoft.com suchen, da gibts auch sehr ausführliche Beschreibungen.
Ein Windows-"Programm" besteht aus mindestens 2 Funktionen: der WinMain() und der Callback-Funktion. Die WinMain "installiert" das Fenster und meldet es im OS an. Die Callback-Funktion erhält daraufhin "Nachrichten" vom OS, z.B. ob das Fenster verdeckt ist, die Maus sich gerade darüber befindet, usw. In dieser Callback-Funktion sollte man nichts machen, was lange dauert, weil sonst die Nachrichten vom OS nicht mehr bearbeitet werden können. Sie zeichnet aber das Fenster und reagiert auf Benutzereingaben. Deshalb installiert man in der Callback-Funktion einen neuen Prozess, einen Thread, der dann entweder unabhängig pollen kann oder "interrupt"-gesteuert Ereignisse von der seriellen Schnittstelle verarbeitet kann. Dieser Thread kommuniziert dann über selbstdefinierte Nachrichten mit der Callback-Funktion (es gibt noch weitere Möglichkeiten der Komm.) So ist erst mal die Vorgehensweise. Code dafür ist mehrere Seiten lang. Damit man beim coden nicht im Chaos versinkt, trennt man das in mehrere Dateien auf, die der Funktionalität entsprechen. So sollte die Fensteroberfläche mit allen Menüs, Dialogen, Childs, usw. getrennt von der seriellen Kommunikation in mehreren *.cpp und *.h Dateien sein. Das ist ein Vorschlag bei Verwendung der reinen WinApi. Mein Vorschlag ist, schreibe die WinMain, designe Dein Fenster und programmiere es mit allen Elementen, die Du brauchst. Den Code für den seriellen Thread kann man dann ziemlich einfach hinzufügen. Blackbird.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.