Seite 1 von 1

[gelöst]Kommunikation via Serieller Port /Read Blockierung

Verfasst: 24. August 2011 11:24
von Alex66955
Hallo,

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
..
Gruß
Alex

Re: Kommunikation via Serieller Port /Read Blockierung

Verfasst: 24. August 2011 13:40
von Alex66955
Lösung:
Öfnnen im Modus --> IO_Async |IO_Raw

Code: Alles auswählen

	if(!file->open(IO_Async |IO_Raw| IO_ReadWrite)){
		logger->fatal("Seriell device could not open");
		return false;
	}