C# Serielle Schnittstelle im Hintergrund arbeiten lassen

Gast #703551
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 !
Gast #705145
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
1
while (notTerminating)
2
{
3
   //...
4
   ReadFile
5
   //...
6
}

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.
Gast #705243
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren