Bonjour à tous,

Mon projet consiste à faire une interface graphique pour récupérer des données venant d'un matériel extérieur à un Ordinateur.
Pour ne pas freezer mon interface j'ai créé un QThread dans ma classe principale à partir de ma classe principale pour l'affichage.

Pour que ce thread ne se termine pas, j'ai mis un boucle do while() avec sleep pour la condition de non appel de fonction d'acquisition, d'attente si on préfère.
Lorsqu'on appuie sur un bouton d'acquisition, la variable "num_fonction_acq" passe de 1 à 4 selon les modes d'acquisitions.

Cette fonction est lancé après le start, je l'ai mise dans run().

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
void Communication_spectro::Acquisition()
{
    do{
 
        switch (num_fonction_acq) {
 
        case 0:
          Sleep(10000);
          //this->wait(10000 = 100000000);
          cout << "pause" << endl;
          break;
 
          cout << "essai1" << endl;
        //Fonction d'acquisition du bruit
        case 1:
          //cout << "etape 1" << endl;
          Acquisition_bruit();
          num_fonction_acq = 0; //remise à zero d'une demande de fonction
          emit(signal_acq_bruit()); //affichage des données à l'écran
 
          //cout << "etape 2" << endl;
          break;
 
        //Fonction d'acquisition unique
        case 2:
          Acquisition_unique();
          num_fonction_acq = 0;
          break;
 
        //Fonction d'acquisition unique + moyenne
        case 3:
          Acquisition_unique_nb_acq();
          num_fonction_acq = 0;
          break;
 
        //Fonction d'acquisition continue
        case 4:
          Acquisition_continue();
          num_fonction_acq = 0;
          break;
 
        default:
 
          break;
        }
 
    }
    while (stop_thread == 0);
 
 
    //Fin de communication avec la spectromètre
    DoubleArray_Destroy(spectrumArrayHandle);
    DoubleArray_Destroy(wavelengthArrayHandle);
 
    Wrapper_closeAllSpectrometers(wrapperHandle);
    Wrapper_Destroy(wrapperHandle);
 
}
Le but avec un thread permanent est de s'affranchir de la contrainte de temps que représente la création d'un connexion USB avec le matériel.

Comment est-ce que je pourrais faire afin de faire passer le QThread du mode sommeil avec Sleep() au mode Running?