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

Plateformes Discussion :

Lire des données par le port série (Qt ExtSerialPort) sans fausse mesure [Embarqué]


Sujet :

Plateformes

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Lire des données par le port série (Qt ExtSerialPort) sans fausse mesure
    Bonjour,

    Je bosse actuellement sur un projet mellant QT et arduino.
    Le but est de recuperer des valeurs que l'arduino me transmet en serie.
    Seulment le flux que je recois est non continue.
    Exemple photo :
    Nom : testserie.png
Affichages : 1722
Taille : 11,8 Ko

    Quelqu'un sait il comment je pourrais faire pour evité ces atrefacts et ces valeurs vides ?


    Voici mon code source :

    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
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QtExtSerialPort/qextserialport.h>
    #include <QtExtSerialPort/qextserialenumerator.h>
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        //Objet qui contient les infos sur les ports
        QextSerialEnumerator mesPorts;
        //On met ça dans une liste
        QList <QextPortInfo> ports = mesPorts.getPorts();
        //parcours de la liste pour la combobox
        for(int i=0; i<ports.size();i++)
        {
            ui->comboPort->addItem(ports.at(i).physName);
        }
        //ajout des vitesses
        ui->comboVitesse->addItem("300");
        ui->comboVitesse->addItem("1200");
        ui->comboVitesse->addItem("2400");
        ui->comboVitesse->addItem("4800");
        ui->comboVitesse->addItem("9600");
        ui->comboVitesse->addItem("14400");
        ui->comboVitesse->addItem("19200");
        ui->comboVitesse->addItem("38400");
        ui->comboVitesse->addItem("57600");
        ui->comboVitesse->addItem("115200");
        ui->comboVitesse->setCurrentText("9600");
     
    }
     
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    BaudRateType MainWindow::getBaudRateFromString(QString baudRate) {
        int vitesse = baudRate.toInt();
        switch(vitesse) {
            case(300):return BAUD300;
            case(1200):return BAUD1200;
            case(2400):return BAUD2400;
            case(4800):return BAUD4800;
            case(9600):return BAUD9600;
            case(19200):return BAUD19200;
            case(38400):return BAUD38400;
            case(57600):return BAUD57600;
            case(115200):return BAUD115200;
            default:return BAUD9600;
        }
    }
     
    void MainWindow::on_btnconnexion_clicked()
    {
    //Deux cas de figures a gerer
        //Cas du coche > connexion
     
        if(ui->btnconnexion->isChecked()){
            //On cree l'objet et tente de se connecter a larduino
            port=new QextSerialPort();
            //reglage port et vitesse
            port->setPortName(ui->comboPort->currentText());
            port->setBaudRate(getBaudRateFromString(ui->comboVitesse->currentText()));
            //Reglages conforme a l'arduino
            port->setParity(PAR_NONE);//parité
            port->setStopBits(STOP_1);//nombre de bits de stop
            port->setDataBits(DATA_8);//nombre de bits de données
            port->setFlowControl(FLOW_OFF);//pas de contrôle de flux
            //Ouverture du port
            port->open(QextSerialPort::ReadWrite);
            //Modif message bouton
            ui->btnconnexion->setText("Déconnecter");
            //On connecte le slot pour recevoir les data
            connect(port,SIGNAL(readyRead()), this, SLOT(readData()));
     
        }
        else {
                //on se déconnecte de la carte Arduino
                port->close();
                //puis on détruit l'objet port série devenu inutile
                delete port;
                ui->btnconnexion->setText("Connecter");
            }
        }
    void MainWindow::readData()
        {
     
            QByteArray array = port->readAll();
            ui->listWidget->insertPlainText(array);
     
        }
    Le but finale est de simuler une mesure de temperature que je mettrais sous forme de courbe affin de l'afficher en temps reel.
    J'utilise pour ça un arduino sur le quel je lis la valeur d'un potentiometre.

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2015
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je répond moi même a ma question.

    Avant d'afficher les données reçus, il faut les vérifier tout simplement.

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

Discussions similaires

  1. Lire des données par Bluetooth
    Par UCEF11 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 13/08/2012, 10h13
  2. Traitement des données d'un port série
    Par Narizuke dans le forum C#
    Réponses: 14
    Dernier message: 04/05/2012, 12h14
  3. [WD 9] traiter des données provenant du port série
    Par kouki507 dans le forum WinDev
    Réponses: 2
    Dernier message: 13/12/2007, 19h00
  4. Envoyer des données sur le port série
    Par jbidou88 dans le forum Flash
    Réponses: 3
    Dernier message: 18/09/2006, 11h33
  5. [javax.comm] Envoyer des données sur le Port série
    Par deuspi dans le forum Applets
    Réponses: 2
    Dernier message: 29/08/2006, 09h40

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