Forum: PC-Programmierung QT RS232 (Serial port)


von michael (Gast)


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/tutorial_1.html

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?

von Thomas (Gast)


Lesenswert?

Wo liegt denn die DLL?

von michael (Gast)


Lesenswert?

die DLL liegt unter c:\Windows

von michael (Gast)


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

von ... (Gast)


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-files.html#declaring-other-libraries
bzw,
http://www.androdna.com/programming/QtTutorial/tutorial_4.html

von michael (Gast)


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

von ... (Gast)


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.

von michael (Gast)


Angehängte Dateien:

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

von michael (Gast)


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

von ... (Gast)


Lesenswert?

Meine Glaskugel hatte Recht:
1
void MainWindow::on_sendButton_clicked()
2
{
3
  QString text=input->text();
4
  QByteArray bytes=text.toAscii();
5
  sp->send(bytes.size(),bytes.data());
6
  if(portOpen)
7
  {
8
    serialLog->append("<font color=blue>"+text+"</font>");
9
  }
10
  else
11
  {
12
    serialLog->append("<font color=red>"+text+"</font>");
13
  }
14
  input->clear();
15
}
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

von ... (Gast)


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:
1
  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.

von michael (Gast)


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.

von Rolf Magnus (Gast)


Lesenswert?

Es gibt auch noch copy/paste.


Nur so am Rande:
1
 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.

von michael (Gast)


Angehängte Dateien:

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!

von ... (Gast)


Lesenswert?

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

Irrtum, das geht definitiv!

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

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.