qextserialport unter windows und linux

Alles rund um die Programmierung mit Qt
Antworten
Sumpi
Beiträge: 21
Registriert: 16. Februar 2006 10:13
Wohnort: Graz

qextserialport unter windows und linux

Beitrag von Sumpi »

Hallo zusammen!

Ich versuch gerade eine Applikation, die unter windows bereits läuft auf Linux zu portieren. Diese App verwendet qextserialport, um über die RS232 mit anderer Hardware zu kommunizieren. Unter windows funktioniert das auch Sang und Klanglos, aber unter Linux passieren seltsame Dinge...
Ich hab als name "/dev/ttyS0" angegeben. Im Ordner, in dem die App liegt, findet man nach dem Start der Applikation einen Datei yS0. Die App scheint in diese Datei zu schreiben, anstatt /dev/ttyS0 zu verwenden. Wenn ich einen Link auf /dev/ttyS0 mit Namen yS0 anlege, dann hängt sich die App auf. Wie muss ich die qextserialport initialisieren, damit das auch unter Linux funzt?

Danke im Voraus!
Sumpi
Why geeks like computers:
unzip, strip, touch, finger, grep, mount, fsck,
more, yes,fsck,fsck,fsck,
umount, sleep
apfei01
Beiträge: 17
Registriert: 2. Oktober 2005 22:04

Beitrag von apfei01 »

hallo sumpi,

unter linux öffne ich eine serielle schnittstelle mit qextserialport so:

Code: Alles auswählen

void SerialInterface::OpenPort (QString portname) {
		
	CommPort -> setPortName (portname);
	CommPort -> setBaudRate (BAUD38400);
	CommPort -> setDataBits (DATA_8);
	CommPort -> setParity (PAR_NONE);
	CommPort -> setStopBits (STOP_1);
	CommPort -> setFlowControl (FLOW_OFF);

	OpenOK = CommPort -> open ();
	
	if (OpenOK) {
		emit SignalUpdateMessage ("Port erfolgreich geoeffnet!");	
	}	
}
der aufruf erfolgt über z.B.

Code: Alles auswählen

serial_if -> OpenPort ("/dev/ttyUSB0");
überprüfe doch einmal die file permissions deiner seriellen schnittstelle mittels :

Code: Alles auswählen

aopen:/home/andy/tmp/qwt # ls -ls /dev/ttyUSB0 /dev/ttyS0
0 crw-rw----  1 root uucp   4, 64 2006-03-09 09:29 /dev/ttyS0
0 crw-rw----  1 root uucp 188,  0 2006-03-09 09:26 /dev/ttyUSB0
aopen:/home/andy/tmp/qwt #
als nutzer solltest du dann der gruppe uucp angehören ...

gruss,
andy.
Sumpi
Beiträge: 21
Registriert: 16. Februar 2006 10:13
Wohnort: Graz

Beitrag von Sumpi »

naja, das öffnen funzt mittlerweile, aber aus welchem seltsamen Grund auch immer, kann ich nicht lesen. Ich öffne das Interface mit ReadWrite, aber es kommt anscheinend nix daher. Kannst Du mir vielleicht ein Code-Beispiel schicken, wie ich das Teil auch dazu bringen kann, dass es etwas vom Interface lesen kann? Im Übrigen hab ich versucht, die Settings mitzuübergeben (Als struct), aber genau das war das Problem *sigh*

Danke auf jeden Fall!

lg,
Sumpi
Why geeks like computers:
unzip, strip, touch, finger, grep, mount, fsck,
more, yes,fsck,fsck,fsck,
umount, sleep
apfei01
Beiträge: 17
Registriert: 2. Oktober 2005 22:04

Beitrag von apfei01 »

in der vergangenheit befand sich ein beispielprogramm auf der homepage von qextserialport - auf die schnelle konnte ich es aber nicht finden :(
so funktioniert es bei mir: (vereinfacht)

Code: Alles auswählen

...
OpenOK = CommPort -> open ();

if (OpenOK) {
		receiveTimer = new QTimer (this);
		connect (receiveTimer, SIGNAL (timeout ()), SLOT (receiveMsg ()));
		receiveTimer -> start (10);
...

Code: Alles auswählen

void Serial::receiveMsg () {
...
	ulong lasterror = CommPort -> lastError ();
	int numBytes = CommPort -> readLine (buff, 80);
...
if (numBytes > 0) {
msg.append (buff);
ausgabe << msg << endl;
...
vielleicht hilft es dir ein stück weiter.

gruss,
andy.
Massimo B.
Beiträge: 45
Registriert: 14. Juni 2006 11:05
Wohnort: Bonn, Germany

Beitrag von Massimo B. »

Worum handelt es sich bei QextSerialPort? Ist das eine Qt Klasse? In den Standard docs kann ich darüber nichts finden. Die Homepage hat auch keine richtige Dokumentation und verweist auf QIODevice.

Ich möchte auch RS232 programmieren und suchte vergeblich nach einer Qt eigenen Lösung.
Gentoo (x86,ppc), KDevelop, Qt3, Qt4
serdar
Beiträge: 5
Registriert: 12. Juni 2006 12:01
Wohnort: Germany
Kontaktdaten:

Beitrag von serdar »

Falls Ihr Beispielcode habt, bitte auch an mich schicken... :oops:
Danke: :lol:
Sumpi
Beiträge: 21
Registriert: 16. Februar 2006 10:13
Wohnort: Graz

Beitrag von Sumpi »

paoleela hat geschrieben:Worum handelt es sich bei QextSerialPort? Ist das eine Qt Klasse? In den Standard docs kann ich darüber nichts finden. Die Homepage hat auch keine richtige Dokumentation und verweist auf QIODevice.

Ich möchte auch RS232 programmieren und suchte vergeblich nach einer Qt eigenen Lösung.
QExtSerialPort ist ein Sourceforge-Projekt, bei dem sich jemand hingesetzt hat und endlich mal die RS232 abstrahiert bzw. gekapselt hat. Man arbeitet damit im Prinzip wie mit QIODevices (also open, close, read, ...)
Eigentlich könnte man die Sache auch "direkt" schreiben, allerdings müsste man das dann für jede Zielplattform machen. Nicht nur für eine. Such einfach mal nach Sourceforge und QExtSerialPort im google...
Why geeks like computers:
unzip, strip, touch, finger, grep, mount, fsck,
more, yes,fsck,fsck,fsck,
umount, sleep
Maik
Beiträge: 45
Registriert: 29. Mai 2006 10:54

Beitrag von Maik »

ich habe die qextserialport 1.0.0 die ja für qt4 gedacht ist. kann sie aber leider nicht kompilieren.

war schwer sie zu finden :-P
Massimo B.
Beiträge: 45
Registriert: 14. Juni 2006 11:05
Wohnort: Bonn, Germany

Beitrag von Massimo B. »

Das ist eine Klasse Idee und ganz im Sinne von Qt. Ich programmiere eine Oberfläche mit TCP und RS232 Anbindung, nutze dafür QKlassen, und die Plattformumsetzung erledigt Qt.

Wäre Trolltech denn so offen und würde solche Opensourceprojekte aufnehmen? Im Zweifelsfall könnte der Author auch die Lizenz völlig an Trolltech abgeben, im Sinne der Verbreitung. Mit einer offiziellen und dokumentierten QKlasse wäre mir wohler, werde mir aber auf jeden Fall das Projekt anschauen, bevor ich mir selbst die Mühe mache, RS232 zu implementieren.
Gentoo (x86,ppc), KDevelop, Qt3, Qt4
Sumpi
Beiträge: 21
Registriert: 16. Februar 2006 10:13
Wohnort: Graz

Beitrag von Sumpi »

paoleela hat geschrieben: Wäre Trolltech denn so offen und würde solche Opensourceprojekte aufnehmen? Im Zweifelsfall könnte der Author auch die Lizenz völlig an Trolltech abgeben, im Sinne der Verbreitung.
Keine Ahnung. Du findest allerdings auf der hp von Trolltech zumindest einen Link auf das Projekt iirc...
Why geeks like computers:
unzip, strip, touch, finger, grep, mount, fsck,
more, yes,fsck,fsck,fsck,
umount, sleep
serdar
Beiträge: 5
Registriert: 12. Juni 2006 12:01
Wohnort: Germany
Kontaktdaten:

Beitrag von serdar »

QextSerialPort 1.0.x kompatibel zu QT 4.1 ist im CVS runterzuladen.
hier: http://qextserialport.sourceforge.net/

Best regards,
http://www.uzumcu.de/
Antworten