RS232 WorkerThread

Gast #814540
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
Gast #815409
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
Gast #815472
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
#815660
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.

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