Serial Port unter Windows

Gast #250036
Lesenswert?

Hallo.

habe eine Frage zum Serial Port unter Windows.

Öffne den Port mit
m_hCom = CreateFile(m_sComPort,
    GENERIC_READ | GENERIC_WRITE,
    0, // exclusive access
    NULL, // no security
    OPEN_EXISTING,
    0, // no overlapped I/O
    NULL); // null template

Wenn ich nun daten aus dem Port lesen möchte mache ich es mit
bReadRC = ReadFile(m_hCom, &sBuffer, 40, &iBytesRead, NULL);

Leider muß ich aber wissen ob Daten da sind oder nicht.
D.H ich polle diese Function, was den rechner landsam macht.

Gibt es mit dem FileHandle ein Möglichkeit eine Callbackfunktion zu
erstellen die aufgerufen wird sobald ein Byte empfangen worden ist?

Danke für eure Hilfe
BYE.
Gast #250043
Lesenswert?

@Tobi,
die Methode mit SetCommMask (...) ist schon richtig. Nur soll die sich
in einem extra Thread befinden.
Im Anhang ein Beispiel, dessen main(...) ganz leicht in eine
WinMain(...) und eine Callback-Fensterroutine geändert werden kann.

Blackbird
Angehängte Dateien:
Gast #250044
Lesenswert?

Was ich noch vergaß zu erwähnen:
das EV_RXFLAG wird hier (noch) nicht im Monitorthread in der
while-Schleife abgefragt. Wird aber genauso ausgewertet wie EV_DSR,
EV_CTS, ...
Also EV_RXFLAG rein und alle anderen raus - fertig.

Blackbird

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