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).
Gast
#250001
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.
Gast
#250003
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.
Gast
#250004
Schau dir das mal an: http://www.mikrocontroller.net/attachment.php/219934/serial.cpp
Gast
#250006
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.