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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.