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

Discussion :

Modifier les parametres de QserialPort avec une combobox ?

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Points : 42
    Points
    42
    Par défaut Modifier les parametres de QserialPort avec une combobox ?
    Bonjour à tous,

    Bon je sèche, alors je viens demander de l'aide .
    Je continue à améliorer mon petit programme de pilotage de robot .

    Je cherche maintenant à paramètrer le Port série avec des combo-box avant de se connecter .

    Par exemple pour la partie vitesse de transmission j'arrive à récupérer la liste pour remplir une combox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        // Je récupére les vitesses disponibles
        for (qint32 Vitesse : QSerialPortInfo::standardBaudRates()) {
            ui->Combo_Baud->addItem(QString::number(Vitesse));
        }
    et ensuite j'affecte la valeur sélectionnée dans la combobox au paramètre de vitesse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      // Je convertie en une valeur int, le texte selectionné dans la combo-box baud
      serial.setBaudRate(ui->Combo_Baud->currentText().toInt()); // Je determine la valeur du baudrate
    Je n'arrive pas à faire la même chose, mais avec la parité par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serial.setParity(QSerialPort::Parity (ui->Combo_Parite->currentData()) );
    Me renvoie l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: cannot convert 'QVariant' to 'QSerialPort::Parity' without a conversion operator
    J'ai beau avoir lu et relu :
    http://doc.qt.io/qt-5/qserialport.html#Parity-enum

    Je n'arrive pas a trouver le bonne syntaxe .
    par exemple dois je rentre une valeur ( 0,2,3,4,5,-1) ou du texte ( "NoParity", "EvenParity"...) ?

    Si je dois mettre une valeur, comme ma combo box c'est du texte, donc je dois convertir un string en int ?

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    bonjour,
    la Parity est une enum donc un entier si tu regardes la doc de QSerialPort donc un peu comme le baudrate il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    serial.setParity((QSerialPort::Parity) (ui->Combo_Parite->currentText().toInt()));

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Points : 42
    Points
    42
    Par défaut
    re,

    Cette solution fonctionne.
    Mais il faut que je mette dans la liste de la combo-box des chiffres correspondant aux valeurs.
    0 pour NoParity
    2 pour EvenParity
    3 pour OddParity
    ...etc

    Mettre des chiffres dans la combo box n'est pas très parlant pour l’utilisateur . comment je pourrais faire ?
    J'aurais pu utiliser la valeur de l'index mais il n'y a pas le "1" comme par hazard lol.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Points : 42
    Points
    42
    Par défaut
    J'ai réussis en faisant quelque chose de très moche . Je suis persuadé qu'il y a bien plus propre et élégant .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        int m_Parite;
     
        if ((ui->Combo_Parite->currentIndex() == 0)) m_Parite = 0;
        else if ((ui->Combo_Parite->currentIndex() == 1)) m_Parite = 2;
        else if ((ui->Combo_Parite->currentIndex() == 2)) m_Parite = 3;
        else if ((ui->Combo_Parite->currentIndex() == 3)) m_Parite = 4;
        else if ((ui->Combo_Parite->currentIndex() == 4)) m_Parite = 5;
        else ( m_Parite = -1);
     
        serial.setParity(QSerialPort::Parity (m_Parite));

  5. #5
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bonjour c'est deja bien comme cela, tu aurais peux faire plus joli en mettant un switch case :
    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
     
    int m_Parite;
     
    switch(ui->Combo_Parite->currentIndex())
    {
        case 0 :    m_Parite = 0;
                        break;
        case 1:     m_Parite = 2;
                        break;
        case 2:     m_Parite = 3;
                        break;
        case 3:     m_Parite = 4;
                        break;
        case 4:     m_Parite = 5;
                        break;
        default :    m_Parite = -1;
                        break;
    }

Discussions similaires

  1. [Débutant] modifier les parametres du graphe avec la commande Bar3
    Par bahja29 dans le forum MATLAB
    Réponses: 0
    Dernier message: 01/04/2009, 12h48
  2. [VB.NET] probleme avec une combobox en ado.net
    Par scorpion.os dans le forum Windows Forms
    Réponses: 7
    Dernier message: 11/05/2006, 15h16
  3. [VBA-E]Erreur avec une combobox qui liste le contenu de cell
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/03/2006, 13h01
  4. probleme avec une combobox
    Par el_quincho dans le forum IHM
    Réponses: 1
    Dernier message: 09/02/2006, 17h14
  5. Interroger les valeur d1 [ javabean ] avec une [ servlet ]
    Par jmeclipse dans le forum Servlets/JSP
    Réponses: 21
    Dernier message: 07/06/2005, 13h14

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