www.mikrocontroller.net

Forum: PC-Programmierung QT RS232 (Serial port)


Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich hab jetzt endlich QT4.7 erfolgreich installiert. Nun es ist so lange 
hier dass ich mit QT rum gemacht hab. Ich muss ein kleine QT Programm 
die auch unteranderem RS232 Schnittstelle enthält schreiben. Bei meinem 
recherche bin ich auf folgendes gestoßen:

Installationsanweisung (Installing QextSerialPort)
http://www.androdna.com/programming/QtTutorial/tut...

Beispiel
http://sourceforge.net/projects/qextserialport/files/

nun zu mein Vorgehen:

Nach dem ich nach der Anweisung installiert hab, versuche ich nun eine 
der Beispiele zu kompalieren, dass ging auch gut danach veruschte ich 
das ausführbare (exe) Datei aus zu führen, dann kommt die Meldung das er 
kein DLL qextserialport.dll nicht finden kann. Was mach ich da falsch?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo liegt denn die DLL?

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die DLL liegt unter c:\Windows

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glube ich hab ein grundsätzliche, ich versuche gerade das Beispiel 
quest zu kompalieren. Dann Spuckt der kompiler folgende fehler:

:: error: cannot find -lqextserialport
:: error: collect2: ld returned 1 exit status

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann such mal auf der Festplatte, wo die Datei libqextserialport
.a rumlliegt. Und dann füge den entsprechenden Pfad mit hinzu.
http://doc.trolltech.com/latest/qmake-project-file...
bzw,
http://www.androdna.com/programming/QtTutorial/tut...

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau ich bin auf diese Seite

http://www.androdna.com/programming/QtTutorial/index.html

jetzt leuft so weit alles gut. Ich hab jetzt die Tutorial von anfang bis 
zum ende abgearbeitet. Ich bekomme jetzt folgende feler

error: input was not declared in this scope
ERROR 1

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"jetzt leuft so weit alles gut"
vs.
"Ich bekomme jetzt folgende feler"

Das ist ein Widerspruch in sich. Also entweder es läuft oder es läuft 
nicht. Entscheide Dich!

Und wenn Du schon Fehlermeldungen postest, dann bitte so, daß man was 
damit anfangen kann. Also wo ist der Sourcecode? Wie kompiliert? Welche 
Parameter? An welcher Stelle kommt der Fehler? ...

Meine Glaskugel meint, Du benutzt eirgendwo irgentetwas namens "input", 
was an diese Stelle nicht existiert.

Autor: michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok sorry

MainWindow.cpp: in member function 'void 
MainWindow::on_sendButton_clicked
MainWindow.cpp:34: error: 'input' was not declared in this Scope
mingw32-make[1]: ***[release/MainWindow.o] Error 1
mingw32-make: ***release] Error 2

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldige

Kompalieren tu ich in dem ich, erst zu Verzeichnis wechsele dann
qmake

dann

mingw32-qmake

dann kommt wie oben geschrieben die Fehlermeldung!

Danke

Gruß
Michael

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Glaskugel hatte Recht:
void MainWindow::on_sendButton_clicked()
{
  QString text=input->text();
  QByteArray bytes=text.toAscii();
  sp->send(bytes.size(),bytes.data());
  if(portOpen)
  {
    serialLog->append("<font color=blue>"+text+"</font>");
  }
  else
  {
    serialLog->append("<font color=red>"+text+"</font>");
  }
  input->clear();
}
Hier nutzt Du etwas names "input", was es in Deinem Program nicht gibt.
Du meinst nicht zufällig "inputText"?

BTW
Wenn Du die Fehlermeldung wenigstens korrekt gepostet hättest, und auch 
noch die paar Zeilen davor hätte man Dir auch eher konkret helfen 
können.

Also Fehlermeldungen IMMER KOMPLETT posten!!! Und IMMER COPY&PASTE!!! 
Niemals abtippen!

Das absolute Minimum in Deinem Fall wäre in etwa gewesen:

g++ -c -O2 -frtti -fexceptions -mthreads -Wall -DUNICODE 
-DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB 
-DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN 
-I"..\..\..\..\devel\QT\2010.02.1\qt\include\QtCore" 
-I"..\..\..\..\devel\QT\2010.02.1\qt\include\QtGui" 
-I"..\..\..\..\devel\QT\2010.02.1\qt\include" -I"." 
-I"..\qextserialport" 
-I"..\..\..\..\devel\QT\2010.02.1\qt\include\ActiveQt" -I"release" -I"." 
-I"..\..\..\..\devel\QT\2010.02.1\qt\mkspecs\win32-g++" -o 
release\MainWindow.o MainWindow.cpp
MainWindow.cpp: In member function 'void 
MainWindow::on_sendButton_clicked()':
MainWindow.cpp:34: error: 'input' was not declared in this scope

Und wenn Du die Fehlermeldung komplett gelessen hättest, und auch die 
Zeile davor, wärst Du vielleicht sogar selbst drauf gekommen. Vor allem 
hättest Du schon mal die richtige Stelle erwischt: Zeile 34 in 
MainWindow.cpp

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, sorry in Deinem vorletzten Post stand ja zumindest schonmal die 
komplette Fehlermeldunmg. Die Zeile davor wäre trotzdem noch 
interressant gewesen.

Wie auch immer, eigentlich steht alles in der Meldung drin. Zeile 34 in 
MainWindow.cpp ist diese:
  QString text=input->text();
Hier steht hinter dem Gleichheitszeichen "input" und der Kompiler hat 
einfach absolute keine Ahnung was das sein soll, da das nirgends sonst 
in Deinem Programm vorkommt.

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist ich hab versucht die Fehlermeldung (Win-XP) CMD aus in 
eine Datei zu Schreiben in dem ich

>>mingw32-make>xxx.txt

Das klappt leider nicht er schreibt irgend welche Messages aber nicht 
die Fehlermeldung, deshalb das abtippen. Die Fehlermeldung hab ich auch 
deuten können, die sache ist die der Code ist aus der tutorial Seite und 
ich dachte das sei bekannt.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt auch noch copy/paste.


Nur so am Rande:
 serialLog->append("<font color=blue>"+text+"</font>");

Hier sollte man den Text escapen, sonst kann man allerhand Unfug 
anstellen, indem man irgendwelche html-Tags in den Text einbaut.

Autor: michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie copy/past in cmd das geht bei mir mit Sicherheit nicht.

>Nur so am Rande:

> serialLog->append("<font color=blue>"+text+"</font>");

>Hier sollte man den Text escapen, sonst kann man allerhand Unfug
>anstellen, indem man irgendwelche html-Tags in den Text einbaut.

Ok mach ich. Jetzt läuft es durch denn in dem Tutorial hat er vergessen 
dass das Objekt inputText heisst das hat mich wahnsinnig irritiert.

QString text=inputText->text();

Allerdings ich hab nur ein Laptop ohne Serielleschnittstelle, kann das 
jemand vielleicht ausprobieren! Richtige Code ist im Anhang zu finden!

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
michael schrieb:
> Wie copy/past in cmd das geht bei mir mit Sicherheit nicht.

Irrtum, das geht definitiv!

Ansonsten:
mingw32-make >xxx.txt 2>&1
Dann landet auch stderr in der Datei.

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.