mikrocontroller.net

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


Autor: Sigi Rohrmoser (spezialist)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sigi Rohrmoser (spezialist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon klar,

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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Blackbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.