mikrocontroller.net

Forum: PC-Programmierung QextSerialPort SIGNAL


Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: eklige Tunke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
QextSerialPort::EventDriven genau das gibt es bei mir nicht.

Autor: brott (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://sourceforge.net/projects/qextserialport/fil...

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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomme ja schon Fehler beim compilieren, wenn ich das Beispiel 
verwende.

Autor: nevis123 (Gast)
Datum:

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

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: nevis123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

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

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mr. Serial (Gast)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

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

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nirgends. Die muß da bleiben, wo sie ist.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm kommt leider immer noch der gleiche Fehler.

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzw. wenn ich die dynamischen lösche und nur die statische da lasse:

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

Autor: Mr. Serial (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.