Forum: PC-Programmierung Serielle Schnittstelle lesen (Windows);


von Sigi R. (spezialist)


Lesenswert?

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).

von Jens (Gast)


Lesenswert?

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.

von Sigi R. (spezialist)


Lesenswert?

Schon klar,

aber die eingehenden Daten kommen byteweise in Blöcken und müssen
wieder zu sinnvollen Werten zusammengesetzt werden.

von Jens (Gast)


Lesenswert?

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.

von Benedikt (Gast)


Lesenswert?


von Tobi H. (tobi-) Benutzerseite


Lesenswert?


von Blackbird (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.