Anzeige:
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 15 von 53

Thema: QT + installieren von Qextserialport.tar.gz

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150

    QT + installieren von Qextserialport.tar.gz

    hi,
    bin ein newbie von qt.

    entwickle unter linux suse-10.3.-64.bit
    qt version mit qt-creator
    ->qt-sdk-linux-x86_64-opensource-2009.03.bin
    qt laeuft
    -> beispiele mit opencv & opengl OK

    fuer ein project brauch ich eine rs232-verbindung
    zu einem microcontroller.
    unter "c" laeufts.

    folgende frage:
    - 1) fuer qt hab ich qextserialport-1.1.tar.gz
    runtergeladen.
    - 2) entpackt
    - 3) mit qt-creator ein build mit dem. *.pro
    durchgefuehrt
    ergebnis:
    - Makefile
    - /build/ -> *.so - files 4 stueck
    - /build/obj/ - *.o files
    - /examples/qespta/

    Wie gehts jetzt weiter, damit ich in
    meinen project die rs232-comport verwenden
    kann?

    Genuegt es jetzt auf der console
    ein "make" durchzufuehren?

    oder brauchts noch weitere schritte.?

    wenn diese schritte dann ok sind
    kann ich in examples das "qspta-example"
    mal laufen lassen?

    waere um hilfe und hinweise sehr froh.
    gruss nomad

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.12.2008
    Beiträge
    34
    Muss es unbedingt QT sein? Kannst doch einfach /dev/ttyX nehmen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150
    hi kater,
    wegen dem Serial-Stuff bestimmt nicht,
    aber ich hab vermutlich ein timing-problem,
    und wuerde das ganze gerne mit multithreaden mit 4 cores machen
    da opengl nicht threadsicher ist .......:-)
    und bei opencv man schon fast openMP und/oder OpemMPI benutzen muesste.
    bin ich auf QT gekommen.
    die frage wie ich qextserialport korrekt installieren kann und qt bekannt machen kann
    ist noch nicht geloest
    gruss nomad

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du musst in der .pro Datei deines Programms die Include und Linker Pfade für die neue Bibliothek hinzufügen und ebenso bei den Linkerdirektiven.

    Vermutlich geht das in Qt Creator auch einfacher.

    In der Laufzeitumgebung muss dann dafür gesorgt sein, dass die .so Dateien so instaliert sind, dass sie der Runtimelinker findet, z.B. in dem man LD_LIBRARY_PATH entsprechend erweitert.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150
    hi,
    vielen dank fuer deine antwort,
    da ich, nach dem ich das packet entpackt habe
    und via Qt-Creator ein Build gemacht habe
    -> ist ein Makefile vorhanden.
    -> wuerde dann auf der console ein <make> machen
    -> und die entsprechenden files
    -> in die entsprechenden folder .../lib /, .../include/ kopieren
    -> dann das *.pro-file anpassen
    gem. deiner antwort.
    ist das so richtig?

    gruss
    nomad

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.12.2008
    Beiträge
    34
    Oh jetzt bin ich aber neugierig. Mikrocontroller, opengl, openmp, multithread, multicore, multitimingproblem, was zur Hölle baust du da?

    Warum nicht ein klassisches
    FILE *fin = fopen("/dev/tty0", "rw");
    fread(buffer, 1, 2, fin);

    ?

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150
    hi kater
    ganz einfach
    (linux-suse 10.3. 64bit, mit einem intel quad und 4gb ram).
    seit april entwickle ich einen head-Tracker.
    also:
    mit opencv und den lucasKanade-Algo.
    -> opencv Webcam & lucas-kanade-Algo
    -> erzeugt 3 - 2dPunkte (x,y) auf dem WebCamBild
    -> diese werden mit einigen tricks in 2 drehwinkel fuer Nick und Turn umgerechnet
    und an opengl weitergegeben, der zeichnet dann eine 3d-Axis welche sich mit
    den bewegungen meines kopfes synchron (echtzeit) mit dreht
    -> gleichzeitig werden die drehungen nochmals umgerechnet um (ServoSteps)
    um via rs232 einen 32-bit propeller-develeopment-board die noetigen daten zu
    zustellen.
    das board controlliert dann in echtzeit ein camheadsystem mit 5 serovs und
    2 webcams (synchron mit meinem kopf bezw. 3d-axis)
    wobei wenn ich will bilder die beiden webcams auch noch angucken kann
    auf dem selben system (gl & cv)

    unter "c" funktioniert das schon recht gut, jedenfalls fuer den anfang
    hab jetzt im augenblick echte timing probleme bekommen
    jetzt versuch ich eben auf verschiedenen pfaden dieses problem zu loesen.
    also entweder mit qt (qt-gl, qt-cv, qt-multitreading) ok
    qextserialport bring ich nicht zum laufen, egal was ich mach
    *.so files sind vorhanden
    kein *.a files vorhanden ???
    oder ich versuchs mit openmp
    etwas komisch wenn man auf der suche nach dokus ploetzlich
    in einem supercomputer_center landet (livermore)
    kann aber schon einige examples aus deren tutorials auf einem quad laufen lassen
    hofentlich hab ich jetzt deine neugierde befriedigt.....;-o
    gruss
    nomad

  8. #8
    Registrierter Benutzer
    Registriert seit
    31.12.2008
    Beiträge
    34
    Nein du hast meine Neugierde noch mehr geweckt. Ich finde das sehr interessant und betreibe auch etwas Bildverarbeitung. Allerdings benutzt ich opencv nur um an das Camerabild zu kommen. Ich schreibe mir meine Alog. selbst, da es mir Spaß und es nur ein Hobby ist.

    Neulich habe ich den Pavlidis Kontur Algo. zum laufen bewegt und kann damit jetzt markante Objekte erkennen und verfolgen. Nach den Klausuren bau ich dann auch Servos an die Kamera, so dass sie das Objekt verfolgen kann. In ferner Zukunft kommt das System dann auf einen fahrenden Roboter.

    Allerdings gibt es bei mir keine GUI, da ich momentan noch keine brauche.

    Vllt. bist du ja in irgendeinen Chat, dann könnten wir uns mal austauschen.

    Zu deinem Problem.. ja ich sehe keine Compilterfehlermeldung. Habe QT aber selbst auch noch nie benutzt.

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von nomad Beitrag anzeigen
    hi,
    ...
    Wie gehts jetzt weiter, damit ich in
    meinen project die rs232-comport verwenden
    kann?
    ....
    Du kannst das RPM bei mir ziehen.
    http://download.opensuse.org/reposit...10.3/repodata/
    Einfach in deiner qmake Projekt Datei bei CONFIG qextserialport angeben.
    Geändert von undefined (14-07-2009 um 21:45 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  10. #10
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    also um den qextserielport zu verwenden, einfach entpacken und die einzelnen *.cpp und *.h in deinem projekt hinzufügen.
    dann in der qextserielport.h einen #define setzen damit auch die richtige datei included wird, ist recht selbsterklärend (die windows oder linux)
    bedenke, dass ein signal (ich glaube readyread oder so ähnlich) nicht funktioniert. (falls es bei dir funktioniert, dann bitte um rückmeldung )
    dadurch ist es nötig, einen qtimer zu verwenden der dann nach neuen daten polled..

    wenns ist kann ich auch kurz ein beispiel posten

    greetz

    edit: hier das beispiel
    myserial.cpp:
    Code:
    #include "myserial.h"
    
    MySerial::MySerial()
    {
        interval = MININTERVAL;
    
        y = new QextSerialPort("/dev/ttyS0");
    
        y->setBaudRate(BAUD9600);
        y->setDataBits(DATA_8);
        y->setStopBits(STOP_1);
        y->setParity(PAR_NONE);
        y->setFlowControl(FLOW_OFF);
        y->setTimeout(0,1);
    
    }
    
    MySerial::~MySerial()
    {
        t->stop();
        y->close();
    
        QObject::disconnect(t,SIGNAL(timeout()),this,SLOT(pollSerial()));
    
        delete y;
        delete t;
    }
    
    void MySerial::run()
    {
        t = new QTimer();
        t->setInterval(MININTERVAL);
        if(!y->open(QIODevice::ReadOnly))
        {
            qDebug() << "Couldnt open Serial device.";
            return ;
        }
        y->flush();
        QObject::connect(t,SIGNAL(timeout()),this,SLOT(pollSerial()));
        t->start();
    
        exec();
    }
    
    void MySerial::close()
    {
        quit();
    }
    
    void MySerial::pollSerial()
    {
        QString a;
        qint64 i;
    
        if(y->isReadable())
        {
            a = "";
    
            i = y->bytesAvailable();
            if(i > 0)
            {
                a.append(y->read(i));
                emit dataReceived(a);
            }
        }
    }
    myserial.h:
    Code:
    #ifndef MYSERIAL_H
    #define MYSERIAL_H
    
    #include <QObject>
    #include <QTimer>
    #include <QDebug>
    #include <QThread>
    #include "qextserialport.h"
    
    #define MININTERVAL 25
    
    class MySerial : public QThread
    {
        Q_OBJECT
    public:
        MySerial();
        ~MySerial();
        void run();
        void close();
    
    private:
        QextSerialPort *y;
        QTimer *t;
        int interval;
    
    private slots:
        void pollSerial();
    
    signals:
        void dataReceived(QString);
    };
    
    #endif // MYSERIAL_H
    Geändert von quinte17 (15-07-2009 um 09:34 Uhr)

  11. #11
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150
    hi kater,
    zu also zur GUI, da opengl auch opencv unterstuetzt
    z.b. kannst opencv fuer die webcam, und opengl fuer eine 3d-spielerei
    benutzen: ein 3d-Quader mit texturen (wobei die texturen die webcam-images sind
    das danze dreht sich dann in echtzeit.
    ich hab opengl eigentlich nur fuer testzecke benutzt (3d-Axis) um rauszufinden
    wie die drehungen meines aufgenommen kopfes in 3d aussehen

    -> leider kein chat .-)

    hi undefined
    habs gefunden, die frage waer ob ich alle aufgefuehrten packet runterladen muss?

    hi quinte17,
    edit: danke fuer die beiden beispiele.

    eine neue fragen:
    - ist es mit QT (c++) moeglich, reine low-level-c-funktionen (serialStuff)
    zu integrieren ?
    - hat jemand von euch mit openmp erfahrungen gesammelt ?

    an alle, vielen dank fuer eure antworten
    jetzt muss ich erstmal alles verarbeiten
    gruss nomad

    hat
    Geändert von nomad (15-07-2009 um 09:43 Uhr)

  12. #12
    Registrierter Benutzer
    Registriert seit
    31.12.2008
    Beiträge
    34
    @nomad Hey das Programm kenne ich wo sich so ein Würfel mit dem Webcambild dreht. Sehr nett. Aber das Programm hat ein dicken Fehler, so dass nach 10min der Speicher voll ist

    Ja du kannst alle C-Funktionen auch in c++ nutzen.

    Mit OpenMP werde ich bald Erfahrung sammeln. Womöglich sogar morgen schon. Wir haben da so ein Cluster auf der Arbeit...

    Kein Chat. Schade. Na dann müssen wir hier weiter regen.

    @quinte17
    Wo ist denn die Funktion dataReceived() ?

    PS. Zur Motivation hier ein kleines Video von meinem Programm im Action
    http://130.83.141.57:802/temp/opencvtest.avi

  13. #13
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    Zitat Zitat von kater Beitrag anzeigen
    @quinte17
    Wo ist denn die Funktion dataReceived() ?
    ich glaube entweder verstehe ich deine frage nicht, oder du hast nicht so viel erfahrung mit qt. in qt gibt es das signals und slot prinzip, und diese "funktion" ist ein signal das "emit"ed wird. grob gesagt ähnlich dem throw in java, nur anders

    greetz

  14. #14
    Registrierter Benutzer
    Registriert seit
    19.09.2000
    Ort
    ch-8408 winterthur
    Beiträge
    150
    hi kater,
    meinst du cv3s.cpp ?
    wenn ja, hast du voellig recht, man hat mich schon darau aufmerksam gemacht,
    ca. 1 gb ram geht drauf.....
    zu diesem zeitpunkt gings mir eher darum, mit opencv & opengl erfahrungen zu sammeln,
    weil es im web in meinen augen nur unzureichende beispiele gab (gibt??) .-)
    falls du weist wo der fehler liegt ....

    da heute saemtliche systeme im eimer waren, wild gewortene servos, system crashes
    also alles was man sich so wuenscht.
    hab ich mich mit einigen verbesserung umsetzung von 2d-lucasKanadePoints in 3d-Drehwinkel.....

    ---> hi quinte danke fuer die beispiele, bin aber bis jetzt klaeglich gescheitert....
    --> qt findet qextserialport.h nicht....
    auch wenn ich das header-file into -> /opt/qtsdk-2009.03/qt/include kopiert habe.

    falls ich QT weiterverfolge (wegen den threads etc) werd ich wohl meine low-level c-routinen
    fuer den seriellen Stuff verwenden

    -> @kater: dein avi-file erzeugt bei mir nur ein black-screen..
    <<< the playback of this movies requires a XVID_MPEG-4 decoder plugin which is not
    installed >>>>>>

    zu openmp & weiterentwicklung
    ich schick euch mal folgende source-files
    cv3d.cpp -> dem mit dem speicher verbrauch
    demo02.cpp -> kleines demo mit opencv & opengl ( einfaches headtracking)
    CamHeadSystem043.cpp -> ACHTUNG nicht laufen lassen
    braucht unbedingt den microcontroller zum laufen
    alles als *.tarr.gz
    bin gespannt auf eure reaktion
    hoer jetzt fuer heute mal auf
    schoenen abend noch
    gruss nomad

  15. #15
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    Zitat Zitat von nomad Beitrag anzeigen
    ---> hi quinte danke fuer die beispiele, bin aber bis jetzt klaeglich gescheitert....
    --> qt findet qextserialport.h nicht....
    auch wenn ich das header-file into -> /opt/qtsdk-2009.03/qt/include kopiert habe.

    falls ich QT weiterverfolge (wegen den threads etc) werd ich wohl meine low-level c-routinen
    fuer den seriellen Stuff verwenden
    ich habe das nicht in die systemdinger reingehauen... wenn du mit qt creator arbeitest, dann einfach dort in dem projekt einzeln hinzufügen und fertig, der macht dass dann automatisch (qmake dann nochmal ausführen)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •