Nichtblockierendes Lesen von COM-Port
-
Ich versuche Daten (synchron) vom COM-Port zu lesen, allerdings weiß ich vorher nicht, ob und wie viele verfügbar sind. Zu diesem Zweck hätte ich deswegen gerne eine Lesefunktion, die nichtblockierend arbeitet, sprich wenn keine Daten da sind, kommt sie mit bytesReaded==0 zurück.
Bei ReadFile(Ex) habe ich nur irgend welchen dubiosen Overlapped-Krempel gefunden, be dem es um eine Callback-Funktion geht (also auch nicht das, was ich brauche). Wie geht es dann - oder besser, geht es überhaupt?
-
Normalerweise ist das mit OVERLAPPED glaub' schon das, was du suchst

-
OVERLAPPED ist mehr für gleichzeitige Lese- und Schreiboperationen.
ReadFile(Ex) (..) alleine löst das Problem auch nicht.... OVERLAPPED o; o.hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); SetCommMask (hCom, EV_RXCHAR); WaitCommEvent (hCom, &dwEvtMask, &o); if (WAIT_OBJECT_0 == WaitForSingleObject (o.hEvent, 0)) // INFINITE statt 0 wartet unendlich { if (dwEvtMask & EV_RXCHAR) { ...sind nur fragmente, nicht getestet in dieser Zusammenstellung.
Blackbird