Forum: PC-Programmierung RS232 WorkerThread


von moogli (Gast)


Lesenswert?

hi all

Ich möchte eine RS232-Kommunikation mit einem Thread realisieren, der 
WorkerThread sollte regelmässig die Daten bei der Schnittstelle abholen 
und in einen Buffer speichern.
Hat jemand schon ein ähnliches Programm geschrieben oder kennt einen 
guten Link, ja ich hab schon gegooglet ;)

thanks

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Linux oder Windows?

von Christian R. (supachris)


Lesenswert?


von moogli (Gast)


Lesenswert?

Windwos

von Blackbird (Gast)


Lesenswert?

"... WorkerThread sollte regelmässig die Daten bei der Schnittstelle 
abholen ..."

Pollen?

Eventgesteuert:
1
static OVERLAPPED o;
2
DWORD dwEvtMask = 0;  // Maske, in die WaitCommEvent aktuelle Werte schreibt
3
DWORD dwEvtMaskIn = EV_BREAK| EV_RXCHAR | ...
4
SetCommMask (hCom, dwEvtMaskIn);
5
o.hEvent = CreateEvent (NULL, FALSE, FALSE, NULL);
6
// in while schleife:
7
  WaitCommEvent (hCom, &dwEvtMask, &o);   // EventMask "scharf machen"
8
  // kommt der Event, ist auch die dwEvtMask geladen und es kann weitergehen
9
  if (WAIT_OBJECT_0 == WaitForSingleObject (o.hEvent, INFINITE)) // warten bis Event
10
{}// Event verarbeiten

So könnte es in WinAPI aussehen.

Blackbird

von moogli (Gast)


Lesenswert?

Danke für eure super Hilfe!
ich werde die CSerialPort Klasse die mir supachris empfohlen hat 
verwenden, allerdings bin ich mir nicht ganz im sicher wo ich sie 
aufrufen soll. Im MainFrame, in der View oder in der Documents wie 
würdet ihrs anstellen?

Danke

von Christian R. (supachris)


Lesenswert?

Da du noch nicht mal geschrieben hast, welche Programmiersprache und 
welche Entwicklungsumgebung du verwendest.....keine Ahnung.

von moogli (Gast)


Lesenswert?

Sorry hab gedacht es sei klar, als ich geschrieben habe, dass ich mit 
dem Programm arbeite, das du mir vorgeschlagen hast.
Also ich verwende VS++ 6.0.

von moogli (Gast)


Lesenswert?

Und es ist eine MFC-Anwendung.

von Matthias (Gast)


Lesenswert?

Wie wäre es mit einer Steuerung über Windows-Messages?

Das hier

http://www.codeproject.com/KB/system/serial.aspx

ist eine universelle Library für sowas.
Ich hab die Variante mit den Windows Messages benutzt und fand die ganz 
ok.
Aber wie Du das machen willst, bleicht Dir überlassen.

von Christian R. (supachris)


Lesenswert?

Für Visual Studio 6 und MFC kannst du das Beispiel doch direkt 
übernehmen. Da ist doch sogar ein Beispielprojekt dabei. Das schickt 
nach jedem empfangenen Byte eine Windows-Message an deine Dialogbox. Das 
Window-Handle gibtst du ja bei der Initialisierung der SerialPort Klasse 
an, da kannste das an ein beliebiges Fenster schicken lassen.

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.