Bonjour à tous,

J'ouvre un nouveau post pour traiter d'un nouveau sujet .
Je suis toujours dans l'application pour faire avancer mon robot. Jusque la ca avance tranquillement. Quand j’appuie sur un bouton - "Bouton_Avance" ) , les ordres sont bien envoyés au port série .


J'essaye aujourd'hui d’envoyer plusieurs trames à la suite ! et oui si je laisse mon bouton appuyé il me faut une boucle qui envoie sans cesse la trame pour avancer. Ainsi tant que je reste clicker sur mon bouton cela envoie des trames au ports qui fait avancer mon robot.

Pour y aller doucement, je me disais que j'allais commencer par envoyer 10 trames à la suite ( espacées de 50 millisecondes)

Voici mon travail jusqu’à présent : ce code ne fonctionne pas; il envoie qu'"une seule trame ? et s'arrete .
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
/********************************************************
   Cette fonction envoi la trame pour AVANCER
********************************************************/
void MainWindow::on_Bouton_Avance_pressed()
{
 
        QByteArray ba ;  //je creer un tableau de bytes
        ba.resize(10);	// Je lui affecte 10 cases
        ba[0] = 2;		// je le remplis de ma série de bytes
        ba[1] = 0;
        ba[2] = 6;
        ba[3] = 150;
        ba[4] = 128;
        ba[5] = 128;		// je le remplis de ma série de bytes
        ba[6] = 128;
        ba[7] = 0;
        ba[8] = 128;
        ba[9] = 146;
 
        for (int i=0;i<10;i++)
        {
           serial.write(ba); // J'envoie la trame au port serie
           QThread::msleep(50);
        }
 
}
Je ne comprends pas pourquoi la boucle n'est pas exécuter 10 fois ? l a trame est envoyé une seule fois après un délais de quelques centaines de millisecondes ?

Auriez vous une solution à me proposer ou une piste ?