Bonjour à tous.

Je développe une petite interface IHM pour un radiotélescope.

J'aimerais afficher un graph des valeurs au fur et a mesure de l'acquisition des donnée.

L'acquisition se fait tous les x secondes via un Thread et un timer

Je souhaiterais la mise a jour du graph a la fin de chaque Thread.

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
# Create figure for plotting
 
                fig = plt.figure()
 
                ax = fig.add_subplot(1, 1, 1)
 
                xs = []
 
                ysbdf = []
 
                ybrut = []
 
                ynet = []
 
 
 
                # Read temperature (Celsius) from TMP102
 
                Yb = adc1.read_adc(3, gain=GAIN)*GADC1A3
 
                YN = adc1.read_adc(1, gain=GAIN)*GADC1A1
 
                YB = adc1.read_adc(2, gain=GAIN)*GADC1A2
 
 
 
                # Add x and y to lists
 
                xs.append(dt.datetime.now().strftime('%H:%M:%S.%f'))
 
                ysbdf.append(Yb)
 
                ybrut.append(YB)
 
                ynet.append(YN)
 
 
 
                # Draw plot
 
                ax.plot(xs, ysbdf, color='r', label='BDF')
 
                ax.plot(xs, ynet, color='g', label='Net')
 
                ax.plot(xs, ybrut, color='b', label='Brut')
 
 
 
                # Format plot
 
                plt.xticks(rotation=45, ha='right')
 
                plt.subplots_adjust(bottom=0.30)
 
                plt.title('TEST')
 
                plt.ylabel('Volt')
 
 
 
                # Draw the graph
 
                plt.show()
J'ai tester le code ci-dessus qui fonctionne très bien quand on l'appelle un seul fois.

J'ai pas tester la ligne de code suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ani = animation.FuncAnimation(fig, animate, fargs=(ys,), interval=50, blit=True)
Ce qui m'interroge avec cette ligne de code c'est l'argument interval qui appelle la fonction animate toute les 50ms dans ce cas. Dans la documentation c'est mini 200ms par défaut.

Auriez vous une piste, un bout de code pour m'aider?

Merci d'avance.