Serielle Schnittstelle lesen (Windows);

OP #250000
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 #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 #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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.