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 : 1788
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.