Seite 1 von 1
qextserialport unter windows und linux
Verfasst: 8. März 2006 13:03
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
Verfasst: 9. März 2006 09:59
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.
ü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.
Verfasst: 10. März 2006 08:20
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
Verfasst: 11. März 2006 14:16
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.
Verfasst: 27. Juni 2006 10:59
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.
Verfasst: 27. Juni 2006 15:50
von serdar
Falls Ihr Beispielcode habt, bitte auch an mich schicken...
Danke:

Verfasst: 29. Juni 2006 07:58
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...
Verfasst: 29. Juni 2006 08:11
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

Verfasst: 29. Juni 2006 09:45
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.
Verfasst: 29. Juni 2006 09:50
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...
Verfasst: 3. November 2006 12:26
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/