Fehlermeldung bei read() von serieller Schnittstelle - warum?

22/03/2012 - 08:54 von Edzard Egberts | Report spam
Zum Lesen von der seriellen Schnittstelle habe ich folgenden Code und
rufe den periodisch auf (m_Buf ist ein std::string und Antworten sind
mit m_Endl abgeschlossen):

// Antworten einlesen und auswerten:
int Ret;
do
{ // Port zeichenweise auslesen
char C;
int Ret= read(&C, 1);
if (Ret== 1)
{
if (C== m_Endl)
{ // Vollstàndige Antwort wurde gelesen
[...] // Auswerten
m_Buf= ""; // Puffer nach Auswertung löschen
}
else m_Buf+= C; // Antwort aufaddieren
}
else if (Ret== -1) cout << "Errno read " << errno << endl;
}
while (Ret== 1);

Damit erhalte ich den Fehler "Errno read 11" (Resource temporarily
unavailable), wenn keine Zeichen im Port vorhanden sind (ansonsten
funktioniert es). Erwartet hàtte ich für Ret aber den Wert Null (EOF)
und keine Fehlermeldung - weiß hier jemand, warum ich die erhalte?
 

Lesen sie die antworten

#1 Edzard Egberts
22/03/2012 - 10:03 | Warnen spam
Edzard Egberts schrieb:
Zum Lesen von der seriellen Schnittstelle habe ich



noch eine allgemeine Frage - hat der Threadkontext irgend eine
Auswirkung auf die Benutzung von Ports? Also z.B. der Main-Thread ruft
open() auf und danach liest ein Worker-Thread den Port, sind da Probleme
zu erwarten?

Ähnliche fragen