mikrocontroller.net

Forum: PC-Programmierung C# Serielle Schnittstelle im Hintergrund arbeiten lassen


Autor: Marcus Schlinn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend...!

Für eine Anwendung mit einem WinCE Betriebssystem benötige ich eine 
grafische Oberfläche und eine serielle Schnittstelle für Ein- und 
Ausgabe Parameter.

Jetzt möchte ich gerne die serielle Schnittstelle im Hintergrund laufen 
lassen und diese autark von meiner grafischen Oberfläche betreiben.

Jetzt meine Frage: Was ist die beste Lösung den Kommunikationsweg 
zwischen der seriellen Schnittstelle und der grafischen Oberfläche 
miteinander zu verknüpfen? Ich möchte gerne zwei unabhängige 
"Programmteile" haben!

In anderen Programmiersprachen wie Linux kann man eine "Named Pipe" 
verwenden. Da ich aber noch kaum Erfahrung mit WinCE habe, wäre es gut 
wenn mir jemand das nötige Background Wissen vermittelt.

Besten Dank im Voraus !

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Thread ist dein Freund. Und dann über Messages oder Events 
untereinander kommunizieren.

Autor: sniper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter WinCE gibt es das Prinzip der Point-To-Point Message Queues.
Es eignet sich dazu, verschiedene Prozesse miteinander kommunizieren
zu lassen.

...Das ist nicht erforderlich, wenn man RS232 Daten einlesen und auf
einem Display ausgeben möchte.

Du könntest Folgendes in Erwägung ziehen:

1.
Serielle Schnittstelle mit CreateFile öffnen

2.
Mit FileIoControl Baudrate, Timeouts usw. setzen

3.
einen Thread starten (CreateThread)

4.
Im Thread
while (notTerminating)
{
   //...
   ReadFile
   //...
}

aufrufen. ReadFile kehrt immer zurück, wenn Daten auf dem Com Port
ankommen. Nun könntest du dem Rest der Applikation signalisieren, dass 
Daten angekommen sind - entweder per Event, per Message oder per 
Callback.

Für kleinere Applikationen würde ich persönlich einen Callback nehmen 
und die entsprechenden Datenstrukturen per CriticalSection schützen.

Tip:
Besondere Sorgfalt ist beim Beenden der Applikation notwendig.
ReadFile zurückkehren lassen, Thread beenden, warten bis Thread
tatsächlich beendet ist, Com Port schließen.

Autor: Marcus Schlinn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !
Danke für Eure Einträge. Ich werde jetzt versuchen eure Vorschläge 
erfolgreich umzusetzen. Sollte jemand noch weitere Beiträge zu diesem 
Thema haben, würde es mich freuen wenn er diese noch mit in Forum 
schreibt.

Besten Dank im Voraus !

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.