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

Alles rund um die Programmierung mit Qt
Antworten
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

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

Beitrag 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
Zuletzt geändert von Alex66955 am 24. August 2011 13:40, insgesamt 1-mal geändert.
Alex66955
Beiträge: 56
Registriert: 23. September 2009 14:48

Re: Kommunikation via Serieller Port /Read Blockierung

Beitrag 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;
	}
Antworten