Forum: PC-Programmierung COM-Port GetOverlappedResult()


von Jens (Gast)


Lesenswert?

Hi,

wenn über einen virtuellen Com-Port weniger Daten übertragen werden als 
im Readfile() angegeben worden ist (mit Overlapped Event), wird dann 
GetOverlappedResult() trotzdem ausgelöst, nur dass dann natürlich 
weniger Daten zur Verfügung stehen, oder wartet GetOverlappedResult() 
wirklich bis die angegebene Byteanzahl auch ankommt?

//hab mal den code schematisch dargestellt:
1
#define MAX_BUFFER_SIZE  200
2
BYTE buffer[MAX_BUFFER_SIZE];
3
4
BOOL ok = ::ReadFile(hCom, buffer, MAX_BUFFER_SIZE - 1, &bytesRead, &ovl);
5
6
DWORD result = ::WaitForMultipleObjects();
7
8
ok = ::GetOverlappedResult(hCom, &ovl, &bytesRead, TRUE);

Gruß
Jens

: Verschoben durch User
von Balduin T. (balduin)


Lesenswert?

Ich arbeite bei Com Ports zwar nie mit overlapped sondern verwende dafür 
einen eigenen Thread ..

aber nach Ablauf der mit SetCommTimeouts eingetellten Timeouts, sollte 
auch der GetOverlappedResult Aufruf zurückkehren.

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.