IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

[QextSerialPort] Suppression de port [Port série]


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Par défaut [QextSerialPort] Suppression de port
    Bonjour tout le monde.

    Je suis en ce moment sur un petit projet d'électronique et j'ai besoin de récupérer sur mon ordi une information qu'un capteur me donne. J'ai réussi à programmer une fenetre Qt qui par l'intermédiaire d'un bouton de connection arrive à créer un port pour lire les informations que je reçoit par usb. Cependant, lorsque je détruit mon port (dans ma méthode déconnection) mon programme s'arrete immédiatement. Auriez vous une idée de là où se situe mon problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    #include "fenetre.h"
    #include "qextserialport.h"
    #include "qextserialenumerator.h"
    #include <QIODevice>
    #include <QTimer>
     
    Fenetre::Fenetre() : QWidget()
    {
        m_clicked=false;
        setFixedSize(500, 500);
     
        m_button_test = new QPushButton(this);
        m_button_test->move(100,300);
        m_button_connection = new QPushButton("Connecter",this);
        m_button_connection->move(100,0);
        m_button_connection->setCheckable(true);
     
        m_comboPort= new QComboBox(this);
        m_comboPort->move(100,100);
     
        QextSerialEnumerator enumerateur; //L'objet mentionnant les infos
        QList<QextPortInfo> ports = enumerateur.getPorts();
        for(int i=0; i<ports.size(); i++)
        {
            m_comboPort->addItem(ports.at(i).physName);
        }
     
        m_label= new QLabel(" ",this);
        m_label->move(100,400);
     
        m_timer=new QTimer(this);
     
        QObject::connect(m_button_connection,SIGNAL(clicked()),this,SLOT(toggle_connection()));
        QObject::connect(this,SIGNAL(connect()),this,SLOT(connection()));
        QObject::connect(this,SIGNAL(disconnect()),this,SLOT(deconnection()));
        QObject::connect(m_timer, SIGNAL(timeout()),this,SLOT(readData()));
    }
     
    //Slot pour checker le bouton connection
    void Fenetre::toggle_connection()
    {
        if(m_clicked)
        {
            m_clicked=false;
            emit disconnect();
        }
        else
        {
            m_clicked=true;
            emit connect();
        }
    }
     
    //Slot pour le click sur le bouton de connexion
    void Fenetre::connection()
    {
            //on essaie de faire la connexion avec la carte Arduino
            //on commence par créer l'objet port série
            m_port = new QextSerialPort();
            //on règle le port utilisé (sélectionné dans la liste déroulante)
            m_port->setPortName(m_comboPort->currentText());
            //on règle la vitesse utilisée
            m_port->setBaudRate(BAUD9600);
            //quelques règlages pour que tout marche bien
            m_port->setParity(PAR_NONE);//parité
            m_port->setStopBits(STOP_1);//nombre de bits de stop
            m_port->setDataBits(DATA_8);//nombre de bits de données
            m_port->setFlowControl(FLOW_OFF);//pas de contrôle de flux
            //on démarre !
            m_port->open(QextSerialPort::ReadOnly);
            //change le message du bouton
            m_button_connection->setText("Deconnecter");
            //on fait la connexion pour pouvoir obtenir les évènements
            QObject::connect(m_port,SIGNAL(readyRead()), this, SLOT(waitData()));
    }
     
    void Fenetre::deconnection()
    {
        m_button_connection->setText("Connecter");
        //on se déconnecte de la carte Arduino
        m_port->close();
        //puis on détruit l'objet port série devenu inutile
        delete m_port;
    }
     
    void Fenetre::waitData()
    {
        m_timer->start(500);
     
    }
     
    void Fenetre::readData()
    {
        QString data=m_port->readAll();
        m_button_test->setText(data);
    }

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Par défaut
    Problème résolu, j'appelais la fonction readData par le signal de mon timer alors que mon port était détruit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Suppression d'une imprimante en fonction du port
    Par Rihaod dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 12/04/2012, 09h02
  2. Réponses: 0
    Dernier message: 13/09/2008, 17h42
  3. Réponses: 9
    Dernier message: 21/11/2005, 18h51
  4. Réponses: 1
    Dernier message: 25/10/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo