QExtSerialPort unter Linux

Alles rund um die Programmierung mit Qt
Antworten
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

QExtSerialPort unter Linux

Beitrag von Fuxi »

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
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: QExtSerialPort unter Linux

Beitrag von solarix »

Welchen Wert hat "com" in "port = new QextSerialPort(com, QextSerialPort::EventDriven);"?
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

Re: QExtSerialPort unter Linux

Beitrag von Fuxi »

Hallo

bei Windows com1 com2 usw
in linux ttyS0 ttyS1 usw

Danke
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

Qextserialport unter Linux

Beitrag von Fuxi »

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
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Qextserialport unter Linux

Beitrag von solarix »

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)
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Re: Qextserialport unter Linux

Beitrag von surfman19 »

Verwendest du folgendes?
"/dev/ttyS0"
oder
"/dev/ttyS1"

was sagt QextSerialEnumerator::getPorts() ?
jerry42
Beiträge: 126
Registriert: 9. Oktober 2008 10:48

Re: Qextserialport unter Linux

Beitrag von jerry42 »

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
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

Re: Qextserialport unter Linux

Beitrag von Fuxi »

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
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Re: QExtSerialPort unter Linux

Beitrag von surfman19 »

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?
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

Re: QExtSerialPort unter Linux

Beitrag von Fuxi »

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
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Re: QExtSerialPort unter Linux

Beitrag von surfman19 »

wie hast es geloest?
Fuxi
Beiträge: 23
Registriert: 24. Mai 2011 20:58

Re: QExtSerialPort unter Linux

Beitrag von Fuxi »

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
surfman19
Beiträge: 52
Registriert: 22. August 2008 18:20

Re: QExtSerialPort unter Linux

Beitrag von surfman19 »

hast ein kurzes beispiel...? was meinst du mit select?

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);
            ...
       }
QtGuy
Beiträge: 8
Registriert: 21. Februar 2012 13:53

Re: QExtSerialPort unter Linux

Beitrag von QtGuy »

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.
Qarduino 2.zip
Beispiel für serielle Kommunikation mit Qt
(150.94 KiB) 259-mal heruntergeladen
Antworten