Bonjour à tous,

Je souhaite pourvoir envoyer une information provenant de Qt vers le logiciel Arduino.
Pour cela, je récupère des données extraites de l'interface graphique, je les traite, et je renvoie une l'information sous forme de trame.
Le problème vient au moment où j'insère la commande "Serial->Write" dans le timer.

Voici le .cpp

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
void MainWindow::MyTimerSlot()
{
    if(flag_timer<2)
    {
        Capteur();
        flag_timer++;
    }
    else
    {
        if(asservissement==1)
        {
            Angle_reel=ui->Angle_reel->text().toFloat();
            if(Angle_ref!=Angle_reel)
            {
                Conversion = (Angle_ref-Angle_reel)*17/24;
                Resultat=QString::number(Conversion);
                ui->lineEdit->setText(Resultat);
                donnee = "E"+pin_output_moteur+"&"+Resultat+"R";
                monde = donnee.toLocal8Bit().data();
                arduino->write(monde,strlen(monde));
                lineEdit=Angle_ref-Angle_reel;
            }
            else
            {
                asservissement=0;
            }
        }
        flag_timer=0;
    }
 
}
Dans ce timer je cherche d'abord à récupérer une donnée provenant de l'Arduino (capteur) puis je fais un calcul à partir de cette variable avec d'autres données provenant de l'application.
Lorsque j’exécute l'application, seul le else du if(flag_timer<2) s'execute.
Après de nombreux essais, j'ai découvert que seul la ligne "arduino->write(monde,strlen(monde));" me pose problème. Sans cette ligne, le timer fonctionne normalement.

J'espère que vous pourrez m'aider à résoudre ce problème.