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 :

Arduino et QSerialDevice [Port série]


Sujet :

Bibliothèques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 93
    Points : 63
    Points
    63
    Par défaut Arduino et QSerialDevice
    Bonjour,

    J'ai un petit souci alors que j'essaie de développer un logiciel graphique permettant de communiquer avec une carte arduino pour contrôler 2 servomoteurs...
    J'explique, le code arduino prend 3 octets en paramètre, en héxa : AA(permet de définir le début d'une communication), 01 ou 02(permet de choisir quel servomoteur on veut actionner) et une valeur entre 00 et B4 (permettant de définir l'angle que doit prendre le servomoteur)... J'ai essayé de communiquer avec un script python et la bibliothèque pyserial et là aucun problème ça fonctionne.
    Seulement je voudrais développer mon programme en C++ avec Qt.. Pour se faire j'utilise la bibliothèque de communication avec le port série QserialDevice.
    Avec cette bibliothèque j'arrive à me connecter mais je n'arrive pas à envoyer un ordre compréhensible par l'arduino..
    Voici le code :

    La méthode pour se connecter :
    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
     
    serial->setDeviceName(port);
            if (serial->open(AbstractSerial::ReadWrite | AbstractSerial::Unbuffered)) {
                if (!serial->setBaudRate(AbstractSerial::BaudRate9600)) {
                    qDebug() << "Set baud rate " <<  AbstractSerial::BaudRate9600 << " error.";
                    return false;
                };
     
                if (!serial->setDataBits(AbstractSerial::DataBits8)) {
                    qDebug() << "Set data bits " <<  AbstractSerial::DataBits8 << " error.";
                    return false;
                }
     
                if (!serial->setParity(AbstractSerial::ParityNone)) {
                    qDebug() << "Set parity " <<  AbstractSerial::ParityNone << " error.";
                    return false;
                }
     
                if (!serial->setStopBits(AbstractSerial::StopBits2)) {
                    qDebug() << "Set stop bits " <<  AbstractSerial::StopBits1 << " error.";
                    return false;
                }
     
                if (!serial->setFlowControl(AbstractSerial::FlowControlOff)) {
                    qDebug() << "Set flow " <<  AbstractSerial::FlowControlOff << " error.";
                    return false;
                }
                qDebug() << "Connexion réussi";
                return true;
            }else{
                return false;
            }
    La méthode pour écrire sur le port série (en cours) :
    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
     
    QByteArray bytes; //data to send
        qint64 bw = 0; //bytes really writed
     
        data = "170";
        bytes.clear();
        bytes.append(170);
        data = "49";
        bytes.append(49);
        data = "80";
        bytes.append(180);
     
        if(serial != NULL){
            bw = serial->write(bytes);
            qDebug() << "Ecriture sur le port serie: " << bw << " bytes";
            serial->flush();
        }
    Je pense que les octets que j'envoi n'ont pas la bonne valeur où alors que mes paramètres de connexion sont mauvais... J'ai essayé plusieurs possibilités mais en vain...
    Quelqu'un aurait déjà utilisé QserialDevice avec l'arduino ou aurait une idée ?

    Merci

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 243
    Points : 398
    Points
    398
    Par défaut
    data = "49";
    bytes.append(49);
    à quoi sert data ?

    Et si tu mets tes données en haxe direct pour éviter les erreurs :

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 93
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par ness522 Voir le message
    à quoi sert data ?

    Et si tu mets tes données en haxe direct pour éviter les erreurs :
    Là précisément ça ne sert à rien(mais cette fonction est un test), c'est que j'ai effectué plusieurs test en envoyant à la fonction "write" différents formats (QString, int...), je crois avoir essayé directement en héxa... Je réessaierai dans le doute ce soir quand j'aurais mon module arduino sous la main...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 93
    Points : 63
    Points
    63
    Par défaut
    Problème résolu, qui vient en fait d'une connexion capricieuse au port série !

    Merci pour les cours et tutoriels pour apprendre Arduino !

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

Discussions similaires

  1. arduino et début en dev
    Par zerros dans le forum C
    Réponses: 1
    Dernier message: 23/02/2011, 11h32
  2. [QSerialDevice] Problème d'écriture
    Par Action Fighter dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 07/02/2011, 10h47
  3. [QSerialDevice] Problème de parité
    Par keupon dans le forum Qt
    Réponses: 9
    Dernier message: 20/11/2010, 01h38
  4. Réponses: 3
    Dernier message: 01/02/2010, 09h54

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