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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von DanS S. (dns712)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Zweimal ein Byte auslesen?

Oliver

: Bearbeitet durch User
von Peter II (Gast)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.