QExtSerialPort unter Linux
QExtSerialPort unter Linux
Hallo, bitte um Hilfe.
Ich habe ein Programm, was die serielle Schnittstelle mit QExtSerialPort betreibt.
Unter Windows klappt alles prima.
Aber unter Linux werden keine Daten empfangen.
Hier ein Auschnitt :
port = new QextSerialPort(com, QextSerialPort::EventDriven);
connect(port, SIGNAL(readyRead()), this, SLOT(received()));
port->close();
port->open(QIODevice::ReadOnly);
if (!port->isOpen()) {
QMessageBox msgBox;
msgBox.setText("Comport nicht bereit !");
msgBox.exec();
} else {
port->setBaudRate(BAUD9600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_ODD);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
}
Geht das unter Linux ?
Danke
Herbert
Ich habe ein Programm, was die serielle Schnittstelle mit QExtSerialPort betreibt.
Unter Windows klappt alles prima.
Aber unter Linux werden keine Daten empfangen.
Hier ein Auschnitt :
port = new QextSerialPort(com, QextSerialPort::EventDriven);
connect(port, SIGNAL(readyRead()), this, SLOT(received()));
port->close();
port->open(QIODevice::ReadOnly);
if (!port->isOpen()) {
QMessageBox msgBox;
msgBox.setText("Comport nicht bereit !");
msgBox.exec();
} else {
port->setBaudRate(BAUD9600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_ODD);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
}
Geht das unter Linux ?
Danke
Herbert
Re: QExtSerialPort unter Linux
Welchen Wert hat "com" in "port = new QextSerialPort(com, QextSerialPort::EventDriven);"?
Re: QExtSerialPort unter Linux
Hallo
bei Windows com1 com2 usw
in linux ttyS0 ttyS1 usw
Danke
bei Windows com1 com2 usw
in linux ttyS0 ttyS1 usw
Danke
Qextserialport unter Linux
Hallo,
hat jemand Qextserialport / Qt unter Linux am laufen ?
Unter Windows klappt alles super, nur unter Linux bleibt das Programm hängen.
Es scheint auch so, das Eventdriven nicht funktoniert.
Bitte um Hilfe.
Danke
Herbert
hat jemand Qextserialport / Qt unter Linux am laufen ?
Unter Windows klappt alles super, nur unter Linux bleibt das Programm hängen.
Es scheint auch so, das Eventdriven nicht funktoniert.
Bitte um Hilfe.
Danke
Herbert
Re: Qextserialport unter Linux
Bitte keine Doppelposts.. wenn du neue Erkenntnisse hast, trag diese doch im Originalpost ein.. (http://www.qtforum.de/forum/viewtopic.php?f=1&t=14485)
Re: Qextserialport unter Linux
Verwendest du folgendes?
"/dev/ttyS0"
oder
"/dev/ttyS1"
was sagt QextSerialEnumerator::getPorts() ?
"/dev/ttyS0"
oder
"/dev/ttyS1"
was sagt QextSerialEnumerator::getPorts() ?
Re: Qextserialport unter Linux
hi,
ich verwende auch ab und zu meine serielle Schnittstelle unter Linux (aber nicht mit Qt).
Sind für /dev/tty* auch entsprechend die Berechtigung da? Zumindest bei mir scheint standardmäßig nur root lesen/schreiben zu dürfen.
Nur eine Idee...
Gruß
jerry42
ich verwende auch ab und zu meine serielle Schnittstelle unter Linux (aber nicht mit Qt).
Sind für /dev/tty* auch entsprechend die Berechtigung da? Zumindest bei mir scheint standardmäßig nur root lesen/schreiben zu dürfen.
Nur eine Idee...
Gruß
jerry42
Re: Qextserialport unter Linux
Hallo und danke für die Anworten.
Läuft qextserialenumerator überhaupt unter Linux ?
Auszug aus dem Quelltext
#ifdef _TTY_POSIX_
qCritical("Enumeration for POSIX systems is not implemented yet.");
#endif /*_TTY_POSIX_*/
Habe ich aber nicht ausprobiert.
Wußte bis jetzt nicht wofür das gut ist.
Möchte doch nur Daten über die Serielle Schnittstelle unter Qt und Linux einlesen.
Unter Linux stürzt es dabei ab und unter Windows läuft alles prima.
ZU den Rechten :
Ich denke schon , das ich die habe.
Bin leider nicht so fit in Linux.
Kann aber mit einem Terminalprogramm und mit cat /dev/tty S0 Daten einlesen.
Ich stelle zur Zeit die Parameter für die Schnittstelle im Quelltext ein.
Ist es besser Sie mit stty direkt einzustellen ?
Danke
Herbert
Läuft qextserialenumerator überhaupt unter Linux ?
Auszug aus dem Quelltext
#ifdef _TTY_POSIX_
qCritical("Enumeration for POSIX systems is not implemented yet.");
#endif /*_TTY_POSIX_*/
Habe ich aber nicht ausprobiert.
Wußte bis jetzt nicht wofür das gut ist.
Möchte doch nur Daten über die Serielle Schnittstelle unter Qt und Linux einlesen.
Unter Linux stürzt es dabei ab und unter Windows läuft alles prima.
ZU den Rechten :
Ich denke schon , das ich die habe.
Bin leider nicht so fit in Linux.
Kann aber mit einem Terminalprogramm und mit cat /dev/tty S0 Daten einlesen.
Ich stelle zur Zeit die Parameter für die Schnittstelle im Quelltext ein.
Ist es besser Sie mit stty direkt einzustellen ?
Danke
Herbert
Re: QExtSerialPort unter Linux
vielleicht mal den debugger anschließen and rausfinden wo er abstuerzt?
bei mir steht hier:
/*POSIX CODE*/
#ifdef _TTY_POSIX_
#include "posix_qextserialport.h"
#define QextBaseType Posix_QextSerialPort
habe: qextserialport-1.2win-alpha und du?
bei mir steht hier:
/*POSIX CODE*/
#ifdef _TTY_POSIX_
#include "posix_qextserialport.h"
#define QextBaseType Posix_QextSerialPort
habe: qextserialport-1.2win-alpha und du?
Re: QExtSerialPort unter Linux
Danke surfman19
Ich habe auch die 1,2 win
Ich glaube bei readall stürzt er ab.
Aber nur unter Linux
Habe das aber jetzt anders gelöst.
Vielen dank
Herbert
Ich habe auch die 1,2 win
Ich glaube bei readall stürzt er ab.
Aber nur unter Linux
Habe das aber jetzt anders gelöst.
Vielen dank
Herbert
Re: QExtSerialPort unter Linux
wie hast es geloest?
Re: QExtSerialPort unter Linux
Hallo surfman19 und die anderen,
Mit :
open,
select
und read
Öffnen,
selectieren ob Daten da sind
Lesen.
Kannst mal googlen, steht
genug im Internet
Gruß
Herbert
Mit :
open,
select
und read
Öffnen,
selectieren ob Daten da sind
Lesen.
Kannst mal googlen, steht
genug im Internet
Gruß
Herbert
Re: QExtSerialPort unter Linux
hast ein kurzes beispiel...? was meinst du mit select?
so:
so:
Code: Alles auswählen
char buff[1024];
int numBytes;
port = new QextSerialPort("\dev\ttyS0");
port->setBaudRate(bt);
port->setFlowControl(ft);
port->setParity(pt);
port->setDataBits(dt);
port->setStopBits(st);
port->open(QIODevice::ReadWrite);
numBytes = port->bytesAvailable();
qDebug("bytes available: %d", numBytes);
if(numBytes > 0)
{
if(numBytes > 1024) numBytes = 1024;
int i = port->read(buff, numBytes);
...
}
Re: QExtSerialPort unter Linux
Hallo,
das Thema ist zwar nicht ganz neu, aber vielleicht hilft die Antwort ja doch jemandem weiter.
Und zwar habe ich vor einiger Zeit mal mit nem Arduino-Microcontroller rumgespielt und habe die einzelnen Pins des Controllers auch über QExtSerialPort seriell gesteuert.
Ich habe dazu eine ziemlich alte Version von QExtSerialPort verwendet und einige Bezüge zu Windows entfernt, da es sich sonst nicht compilieren liess unter OSX. Unter Linux und eben OSX läuft es aber problemlos.
Ich habe einmal ein unfertiges Projekt verpackt, welches ich gerade nochmal unter OSX mit Qt4.8 starten konnte. In dem Programm sieht man recht simpel, wie in der MainWindow.cpp der serielle Port angesprochen wird, wie die Verbindung aufgebaut wird und wie Daten gelesen und empfangen werden können.
Wenn man den entsprechenden Seriellen Port im Quellcode einträgt, sollte man damit einfach ein wenig rumtesten können.
das Thema ist zwar nicht ganz neu, aber vielleicht hilft die Antwort ja doch jemandem weiter.
Und zwar habe ich vor einiger Zeit mal mit nem Arduino-Microcontroller rumgespielt und habe die einzelnen Pins des Controllers auch über QExtSerialPort seriell gesteuert.
Ich habe dazu eine ziemlich alte Version von QExtSerialPort verwendet und einige Bezüge zu Windows entfernt, da es sich sonst nicht compilieren liess unter OSX. Unter Linux und eben OSX läuft es aber problemlos.
Ich habe einmal ein unfertiges Projekt verpackt, welches ich gerade nochmal unter OSX mit Qt4.8 starten konnte. In dem Programm sieht man recht simpel, wie in der MainWindow.cpp der serielle Port angesprochen wird, wie die Verbindung aufgebaut wird und wie Daten gelesen und empfangen werden können.
Wenn man den entsprechenden Seriellen Port im Quellcode einträgt, sollte man damit einfach ein wenig rumtesten können.