Hallo! QT ist für mich absolutes Neuland, also sorry, falls dieses Thema schon mal behandelt wurde. Google mein Freund spuckt auch so einiges aus, wenn man danach sucht, aber ich habe Probleme meine COM Schnittstelle am PC mittels QT anzusprechen. Mein Setup: # Windows 7 # QT SDK (inkl. QT4.7.4 + Qt Creator 2.2.1) Folgende Tutorials habe ich schon probiert: http://www.androdna.com/programming/QtTutorial http://www.webalice.it/fede.tft/serial_port/serial_port.html Aber nichts davon läuft. Es scheitert schon daran, dass die Sources auf meinem System nicht kompilierbar sind. Hat von euch vielleicht jemand ein Testprogramm, welches bereits mit dieser QT Version läuft und mir zur Verfügung stellen kann? qextserialport läuft offenbar mit der neuen Version nicht wirklich. Erklärungen bitte à la "QT4 + Serial Port for Dummies", wie gehabt ist noch etwas Neuland...
Guggst Du hier: http://qt-apps.org/content/show.php?content=112039 oder hier: http://code.google.com/p/qextserialport/ In den Quellen finden sich auch Testprogramme. Kochrezepte wirst Du keine erwarten dürfen - Programmieren hat immer etwas mit Kreativität zu tun. Schon die entsprechenden Tutorials zu Qt durchgearbeitet? Gruss, A.
Danke für die Links! QSerialDevice habe ich schon einmal probiert, da werden aber zumindest 2 Headerdatein nicht gefunden: Fehler:C1083: Cannot open include file: 'QtCore/private/qwineventnotifier_p.h': No such file or directory Fehler:C1083: Cannot open include file: 'ddk/ntddser.h': No such file or directory Bei der SDK die ich installiert habe, sind nur die Libs und die public Headers dabei, ergo kann ich es nicht kompilieren. Habe auch versucht QT mit den Sources zu kompilieren, denn dort würde es ja diese Headers geben, zumindest qwineventnotifier_p.h hätte ich schon gefunden. Aber auch das ist ohne Fehler nicht möglich... Schade, dass die Serielle nicht standardmäßig in QT dabei ist. Hat jemand die Serielle schon mit gleichem Setup zum Laufen gebracht? Einfach die Header Datei zu kopieren ist vermutlich nicht die beste Lösung.
Rooney Bob schrieb: > Fehler:C1083: Cannot open include file: 'ddk/ntddser.h': No such file or > directory Das ist bizarr. Wozu um alles in der Welt benötigt eine Qt-Komponente Definitionen aus dem DDK?
Fehler:C1083: Cannot open include file: 'QtCore/private/qwineventnotifier_p.h': No such file or directory Ja, da scheint es wohl ein Problem mit Qt > 4.7.2 zu geben: http://code.google.com/p/qextserialport/issues/detail?id=91 Was ist mit QSerialDevice? Scheint momentan die besser gepflegte Variante zu sein. Bei qtforum.{org|de} schon vorbei gesurft?
Es geht!!! Ein kleines Update von mir: # QT SDK deinstallieren # MinGW installieren # QT Source Library 4.7.3 installieren (Installervariante) # QT Creator 2.2.1 installieren # QSerialDevice runter laden und entpacken (http://qt-apps.org/content/show.php?content=112039) # BuildLibrary.pro kompilieren (enthalten in QSerialDevice Source) # BuildExamples.pro kompilieren (enthalten in QSerialDevice Source) # Das kompilierte Beispiel "writer" starten --> Output mit Oszi oder zweitem COM Port überprüfen Mit der QT SDK geht es definitiv nicht, wie gehabt, hier sind nur die Libs und die public Headers dabei. QSerialDevice benötigt aber private Headers auch. Das Problem besteht aber laut meiner Recherche erst ab Version 4.7. Installiert man die QT Library separat hat man den kompletten Source. Übrigens parallel QT SDK installiert haben ist eine ganz schlechte Idee, da kommt er dann mit irgendwelchen Pfaden nicht zusammen, auch wenn man den separaten QT Creator verwendet - zumindest war das bei mir so. Mit Sicherheit kann man das aber irgendwo unter den Einstellungen korrigieren... Vielen Dank für eure Hilfe!!!!
2 Rooney Bob Download master version hier: http://gitorious.org/qserialdevice/qserialdevice/archive-tarball/master Es gibt ein Problem mit "ntddser.h" gelöst. Aber der Fehler mit "qwineventnotifier_p.h" kann nicht loswerden. Lösungen: oder Kopie dieses privaten file to QtSDK, oder sammeln Qt von der source.
Hallo ich habe mich den ganzen Tag abgemüht die Doku zu QT4 durchzusuchen um das Problem lösen zu können ohne auf die alten stdio's zugreifen zu müssen. Des Rätsels Lösung ist "QIODevice". Leider habe ich noch nicht herausgefunden, wie ich die Einstellungen der seriellen darüber ändern kann (baudrate ...). Hoffentlich könnt ihr mir dabei helfen. Wenn ihr die Baudraten von Sender und Empfänger aber vorher eingestellt habt ist das hier aber eine ( hoffentlich ) elegante Lösung. #include <QtCore/QCoreApplication> #include <QtCore> #include <QDebug> void Write() { QFile file("/dev/ttyUSB0"); if(file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream stream(&file); stream << "Hello"; stream << "World\r\n"; stream.flush(); file.close(); } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Write(); return a.exec(); }
Olaf T. schrieb: > Des Rätsels Lösung ist "QIODevice". Nö. Das ist für was anders, und nicht für "IO Devices" am Seriellen Port. => Doku. Olaf T. schrieb: > hier aber eine ( hoffentlich ) elegante Lösung Nein. Du benutzt den Device-Node einfach wie eine Datei. Klar, "Everything's a File", aber die Lösung ist nicht portabel, und, wie du schon gemerkt hast: Es fehlt noch einiges. Deine Lösung entspricht so in etwa einem "COPY DATEI.TXT COM1:" aus uralten DOS-Tagen, ohne vorhergehenden MODE-Aufruf. Fazit: nimm qextserialport, oder schau dir wenigstens dessen Sourcecode an.
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.