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
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.
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.
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.
Ich bekomme ja schon Fehler beim compilieren, wenn ich das Beispiel verwende.
Du musst bei den Beispielen (z.B. bei ..\examples\qespta\MainWindow.cpp) noch
1 | #include <cstdio> |
hinzufügen. Dann kompilieren auch die Beispiele durch.
kann mir sonst mal jemand die Beispiele hoch laden, die kompilieren, also das mit Event und Portenumerator. Bei beiden bekomme ich trotz <cstdio> Fehler.
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.
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.
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.
Achso. Man muss erst die Lib erstellen. Kann man die 1.2 auch unter Mac/Linux erstellen lassen? Da kommen nämlich wieder Fehler.
Ich sehe gerade, dass meine Version total veraltet ist. http://code.google.com/p/qextserialport hier gibt es neuere. Leider nciht als Komplettpaket.
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.
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.
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?
Und /usr/local/lib gibt es bei Mac auch. Reicht es, wenn ich da die Libs rein kopiere?
Wie gesagt, ich kenne mich mit dem Mac nicht aus. Probier's doch einfach mal.
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?
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.
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?
bzw. wenn ich die dynamischen lösche und nur die statische da lasse: :-1: error: collect2: ld returned 1 exit status
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.