Forum: PC-Programmierung Bleibe in ReadFile() hängen


von DanS S. (dns712)


Lesenswert?

Hallo,

programmiere zurzeit ein C++ Programm für Windows 10.

Ich lese zwei Bytes von einem COM-Port aus, was auch gut funktioniert.

Wenn ich weniger als zwei Bytes empfange bleibe ich in der Funktion 
ReadFile() hängen und weiß nicht wie ich diesen Fehlerfall bearbeiten 
soll.

1
    fSuccess = ReadFile(hCOM, RxBuffer, RxBufferLength, NULL, NULL);
2
    if (fSuccess == FALSE)
3
    {
4
         return ERROR_COM_READ;
5
    }

von Oliver S. (oliverso)


Lesenswert?

Zweimal ein Byte auslesen?

Oliver

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Daniel S. schrieb:
> Wenn ich weniger als zwei Bytes empfange bleibe ich in der Funktion
> ReadFile() hängen und weiß nicht wie ich diesen Fehlerfall bearbeiten
> soll.

wenn du nicht will, das ReadFile blockiert, musst du einen Timeout 
setzen.

https://msdn.microsoft.com/en-us/library/windows/hardware/aa363437(v=vs.85).aspx

von Bernd K. (prof7bit)


Lesenswert?

oder von einem anderen Thread aus mit CancelIoEx() alle Wartevorgänge 
für dieses Filehandle vorzeitig abbrechen, dann kehrt der Aufruf zurück.

von DanS S. (dns712)


Lesenswert?

Peter II schrieb:
> wenn du nicht will, das ReadFile blockiert, musst du einen Timeout
> setzen.
>
> https://msdn.microsoft.com/en-us/library/windows/hardware/aa363437(v=vs.85).aspx

Danke an Peter hat mir weitergeholfen :)

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.