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().
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.
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); }
Comment est-ce que je pourrais faire afin de faire passer le QThread du mode sommeil avec Sleep() au mode Running?
Partager