Frage

Ich verwende socat eine virtuelle serielle Schnittstelle zu schaffen, mit:

socat PTY,link=/dev/ttySV0,echo=1 PTY,link=/dev/ttySV1,echo=1

Das in meinem Programm in C ++ geschrieben, öffne ich den ttySV1 Hafen und zu lesen beginnen.

Die Lesefunktion ist in einer Weile, aber das Problem ist, dass die Lesefunktion hängt, bis ich Daten an dem Port senden. Wissen Sie, wie man die taht Funktion macht nicht zu hängen und nur beendet, wenn es keine Daten im Puffer ist?

EDIT: I-Daten an den Port senden mit:

echo [data] > /dev/ttySV0
War es hilfreich?

Lösung

Sie können auch eine System Lesefunktion in Abhängigkeit vom Betriebssystem verwenden Sie ausgeführt werden. Die Details unter Menschen sein sollen (3) gelesen werden.

Möchten Sie Satz O_NONBLOCK haben fnctl verwenden. Dies sollte dazu führen, dass Lese zum Scheitern verurteilt, wenn das Rohr / FIFO ist derzeit leer. Ich überprüfte die man-Seiten für Linux, aber ihre ähnliche Verhaltensweisen in den meisten POSIX-basierten Systemen sein sollte.

Andere Tipps

Eine Möglichkeit ist es, die select () Methode zu verwenden, um festzustellen, ob Daten gelesen werden. Diese oder etwas anderes auf Google gefunden (I für „bsd gesucht Steckdosen wählen ") sollten Sie auf dem rechten Weg führen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top