Ich habe folgendes Problem:
Zuerst mein System:
Qt: 3.3.2 Embedded (ohne QextSerialPort)
System: Linux 2.6.9
Architektur: arm
ich versuche eine Verbindung mit der Seriellen Schnittstelle herzustellen. Das funktioniert soweit auch ganz gut, jedoch bin ich beim implementieren der Timeouts auf ein Problem gestoßen.
Die Kommunikation wird durch öffnen mittels QFile und dem Pfad zum Device gestartet. Der Datenaustausch funktioniert bidirektional.
Beim Lesen über QFile wird meine Applikation blockiert sodass ich erst wenn etwas auf die serielle Schnittstelle geschrieben worden ist fortfahren kann. Wie kann ich feststellen ob überhaupt Bytes zum lesen verfügbar sind bzw. beim Aufrufen von zum Beispiel ReadAll (ReadBlock, etc... schon probiert) einfach ein leeres Bytearray zurück geliefert wird falls momentan keine Daten verfügbar sind.
Also Hauptproblem ist das wenn keine Daten empfangen werden ich nicht aus der lese-Operation komme.
Bsp.:
Code: Alles auswählen
..
file = new QFile(devicePath);
if(!file->open(IO_ReadOnly | IO_WriteOnly)){
logger->fatal("Seriell device could not open");
return false;
}
..
..
QString readBytes = file->readAll(); //Blockierung
..
Alex