Forum: PC-Programmierung QextSerialPort SIGNAL


von Mr. Serial (Gast)


Lesenswert?

Hallo,
gibt es in der Lib ein SIGNAL, was kommt, wenn Daten empfangen wurden? 
Es gibt ja readyRead. Aber das wird bei mir nicht ausgelöst, wenn Daten 
kommen. Irgendwie muss man den port noch auf EvenDriven setzen. Aber die 
Beispiele, die Ich gefunden habe funktionieren nicht. Also dieses 
EventDriven gibt es bei mir nicht.
Vielen Dank

von eklige Tunke (Gast)


Lesenswert?


von Mr. Serial (Gast)


Lesenswert?

QextSerialPort::EventDriven genau das gibt es bei mir nicht.

von brott (Gast)


Lesenswert?

EventDriven .. das kenn ich auch nicht. Es gibt eine Funktion 
'bytesAvailable()'. Die kannst du in einem Thread abfragen oder wenns 
einfacher sein soll mit einem Timer. Das sind meines Wissens die 
Methoden, wie man mit der Klasse arbeiten kann.

Lasse mich aber gerne eines besseren belehren.

von Mr. Serial (Gast)


Lesenswert?

http://sourceforge.net/projects/qextserialport/files/qextserialport%20alpha/1.2win-alpha/qextserialport-1.2win-alpha.zip/download

Hier gibt es eine beta Version allerdings nur für Windows? Da ist ein 
Beispiel mit EvenDriven, aber selbst das bekomme ich nicht zum laufen.

von Rolf Magnus (Gast)


Lesenswert?

Mr. Serial schrieb:
> gibt es in der Lib ein SIGNAL, was kommt, wenn Daten empfangen wurden?
> Es gibt ja readyRead. Aber das wird bei mir nicht ausgelöst, wenn Daten
> kommen.

Hmm, sicher? Das ist nämlich genau das, was  dafür vorgesehen ist.

von Mr. Serial (Gast)


Lesenswert?

Ich bekomme ja schon Fehler beim compilieren, wenn ich das Beispiel 
verwende.

von nevis123 (Gast)


Lesenswert?

Du musst bei den Beispielen (z.B. bei ..\examples\qespta\MainWindow.cpp) 
noch
1
#include <cstdio>
 hinzufügen. Dann kompilieren auch die Beispiele durch.

von Mr. Serial (Gast)


Lesenswert?

kann mir sonst mal jemand die Beispiele hoch laden, die kompilieren, 
also das mit Event und Portenumerator. Bei beiden bekomme ich trotz 
<cstdio> Fehler.

von nevis123 (Gast)


Lesenswert?

Ok, dann hast du wohl ein anderer Fehler als ich Anfang der Woche... 
Poste doch mal deine Fehlermeldung, vielleicht kann dir dann konkreter 
geholfen werden.

von Mr. Serial (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mal mein Projekt hoch geladen. In dem Zustand bekomme ich z.B. 
in serialport enumarator einige:

invalid conversion from "BYTE*" to "const char*"

Wenn ich die Dateien aus dem Projekt nehme:
meckert er in den posix Dateien rum, obwohl er die unter Windows gar 
nciht includen dürfte. Die auch gelöscht...:

multiple definition auf PortListener...
collect2: ld returned 1 exit status.

von Rolf Magnus (Gast)


Lesenswert?

Mr. Serial schrieb:
> Ich habe mal mein Projekt hoch geladen. In dem Zustand bekomme ich z.B.
> in serialport enumarator einige:
>
> invalid conversion from "BYTE*" to "const char*"
>
> Wenn ich die Dateien aus dem Projekt nehme:
> meckert er in den posix Dateien rum, obwohl er die unter Windows gar
> nciht includen dürfte. Die auch gelöscht...:

Die werden normalerweise gar nicht übersetzt. Aber du (oder wer immer 
das Beispiel so verändert hat) hast anscheinend die Sourcen aus 
QExtSerialPort selbst rausgerissen und dann irgendwie direkt in das 
Beispiel reingefummelt. Deshalb werden auch die Posix-Sachen mit 
übersetzt.
So ist das überhaupt nicht gedacht.
Das Beispiel scheint aus einem bei QExtSerialPort mitgelieferten 
entstanden zu sein. Lade das ganze Ding am besten mal komplett im 
Original runter und bau dir dann erstmal die DLL und dann das 
Beispielprogramm, damit du eine saubere Ausgansbasis hast.

von Mr. Serial (Gast)


Lesenswert?

Achso. Man muss erst die Lib erstellen. Kann man die 1.2 auch unter 
Mac/Linux erstellen lassen? Da kommen nämlich wieder Fehler.

von Mr. Serial (Gast)


Lesenswert?

Ich sehe gerade, dass meine Version total veraltet ist. 
http://code.google.com/p/qextserialport hier gibt es neuere. Leider 
nciht als Komplettpaket.

von Mr. Serial (Gast)


Lesenswert?

So also das neuste habe ich jetzt mal unter MacOs getestet. Wenn ich die 
src.por compliiere je nach dem, ob ich CONFIG += staticlib setze oder 
nicht:

libqextserialportd.a
libqextserialportd.1.2.0.dylib
libqextserialportd.1.2.dylib
libqextserialportd.1.dylib
libqextserialportd.dylib

Wenn ich jedoch die Beispiele starte kommt zur Laufzeit:
Library not loaded: libqextserialportd.1.dylib

und das Programm stützt ab.

von Rolf Magnus (Gast)


Lesenswert?

Der Fehler kommt, weil die Lib nicht in einem Standard-Library-Pfad 
liegt und deshalb nicht gefunden wird. Wie das beim Mac geht, weiß ich 
nicht.
Unter Linux kannst du die Environment-Variable LD_LIBRARY_PATH auf das 
Verzeichnis setzen, wo die Lib liegt, um sie zu finden oder sie in einen 
Standard-Lib-Pfad wie /usr/local/lib kopieren und dann als root ldconfig 
ausführen. Beim Mac wird's ähnlich sein.

von Mr. Serial (Gast)


Lesenswert?

Und wenn ich das statisch linke, was mir eh lieber ist habe ich ja eine 
libqextserialportd.a. Da müsste es doch reichen, diese in das 
Beispielverzeichnis zu kopieren und libs+=libqextserialportd machen, 
oder?

von Mr. Serial (Gast)


Lesenswert?

Und /usr/local/lib gibt es bei Mac auch. Reicht es, wenn ich da die Libs 
rein kopiere?

von Rolf Magnus (Gast)


Lesenswert?

Wie gesagt, ich kenne mich mit dem Mac nicht aus. Probier's doch einfach 
mal.

von Mr. Serial (Gast)


Lesenswert?

also /usr/lib ist es. Dann habe ich noch durch ports /opt/local/lib. 
Aber das bringt leider alles nicht. Könnte ich das nun auch statisch 
linken?

von Rolf Magnus (Gast)


Lesenswert?

Mr. Serial schrieb:
> Und wenn ich das statisch linke, was mir eh lieber ist habe ich ja eine
> libqextserialportd.a. Da müsste es doch reichen, diese in das
> Beispielverzeichnis zu kopieren und libs+=libqextserialportd machen,
> oder?

Müßte eigentlich auch ohne gehen, wenn nur die statische da ist.

von Mr. Serial (Gast)


Lesenswert?

Wenn ich die statische habe kommt immer noch der Fehler mit der 
dynamischen. Wo muss die statische denn rein? Ins src/build oder direkt 
ins Beispiel Verzeichnis?

von Rolf Magnus (Gast)


Lesenswert?

Nirgends. Die muß da bleiben, wo sie ist.

von Mr. Serial (Gast)


Lesenswert?

Hmm kommt leider immer noch der gleiche Fehler.

von Mr. Serial (Gast)


Lesenswert?

bzw. wenn ich die dynamischen lösche und nur die statische da lasse:

:-1: error: collect2: ld returned 1 exit status

von Mr. Serial (Gast)


Lesenswert?

Also ich habe es gerade noch einmal unter Windows probiert. Da 
funktioniert es auch nicht, wenn ich statisch linke. Kann das sonst 
jemand mal auf seinem System testen, das statische Linken?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.