source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/trace_1p.c@ 637

Last change on this file since 637 was 637, checked in by ansari, 26 years ago

archediab version 24 initial import

File size: 4.0 KB
Line 
1#include "diabolo.h"
2#include "bolo.h"
3#include "acqui.h"
4#include "carte_acqui.h"
5#include "trace.h"
6#include "synchro.h"
7
8static double table_som[nb_max_bolo]; // table de moyennage
9static double table_moy[nb_max_bolo][max_points_DS]; // table de moyennage
10static double temps_per[max_points_DS]; // table de moyennage
11static int nombre_moy; // nombre de moyennage
12static int indice_per;
13static int flag_trace_moy;
14
15static double temps_origine_local;
16
17
18void exec_trace_1_per(int fen,int item,double valeur,...)
19{
20static double y[nb_max_bolo];
21double decale;
22static int lissage=10,ipas=1;
23int j,k;
24double x;
25
26switch(item)
27 {
28 case ouverture : gg->trace_ouvert=gg->trace_ouvert | 2 ;
29 selectgra(fen);
30 graph->ymin=-120;
31 graph->ymax=120;
32 graph->ypas=20;
33 graph->xmax=2;
34 graph->xpas=0.5;
35 graph->taille_graduations=7;
36// graph->flag_tracen=0;
37// for(j=0;j<nb_max_bolo;j++) if( (j<10) && gg->bolo_type[j]) graph->flag_tracen+=(1<<j);
38 flag_trace_moy=0;
39
40
41 case t_raz : if(synchro_periode>=max_points_DS) synchro_periode=0;
42 nombre_moy=0;
43 ecritD(fen,tp_nb_moy,"0");
44
45 for(indice_per=0;indice_per<synchro_periode;indice_per++)
46 for(j=0;j<nb_max_bolo;j++)
47 table_moy[j][indice_per]=0;
48 flag_trace_moy=0;
49 break;
50
51 case fermeture : gg->trace_ouvert=gg->trace_ouvert & (255-2); // enleve le 2
52 break;
53
54// case t_lissage : case t_lissage+1000 : lissage=valeur; break;
55
56 case t_efface : if(!flag_trace_moy) flag_trace_moy=1;
57 else flag_trace_moy=0;
58 break;
59
60
61 case ds_debut : if(synchro_periode>=max_points_DS) synchro_periode=0;
62 flag_trace_moy=litD(fen,tp_moy,0L);
63 decale=litD(fen,tp_decale,0L);
64 lissage=litD(fen,tp_lissage,0L);
65 if(lissage<1) {lissage=1;ecritD(fen,tp_lissage,"1");}
66// printf("debut avec flag_trace_moy=%d et nombre_moy=%d \n",flag_trace_moy,nombre_moy);
67 if(flag_trace_moy)
68 {
69 if(nombre_moy)
70 {
71 efface(fen);
72 for(j=0;j<nb_max_bolo;j++)
73 {
74 table_som[j]=0;
75 }
76 for(indice_per=0;indice_per<synchro_periode-2;indice_per++)
77 {
78 for(j=0;j<nb_max_bolo;j++)
79 {
80 table_som[j]+=table_moy[j][indice_per];
81 }
82 }
83
84 for(indice_per=0;indice_per<synchro_periode-lissage;indice_per+=lissage)
85 {
86 for(j=0;j<nb_max_bolo;j++)
87 {
88 y[j]=0;
89 for(k=0;k<lissage;k++)
90 y[j]+=table_moy[j][indice_per+k]-table_som[j]/(synchro_periode-2);
91 y[j]=y[j]/(nombre_moy*lissage) + decale*j;
92 }
93 montracen(fen,nb_max_bolo,temps_per[indice_per],y);
94 }
95 }
96 nombre_moy++;
97 ecritD(fen,tp_nb_moy,"%d",nombre_moy);
98 }
99 temps_origine_local=gg->temps_cntl;
100 indice_per=0;
101
102 for(j=0;j<nb_max_bolo;j++) y[j]=0;
103 ipas=lissage;
104
105 move(fen,0,0);
106
107 case ds_suite : if(indice_per>=max_points_DS) indice_per=max_points_DS-1;
108
109 x=gg->periode_echantillonage*(double)(gg->temps_cntl-temps_origine_local);
110
111 if(flag_trace_moy) for(j=0;j<nb_max_bolo;j++) table_moy[j][indice_per]+=xbol(j);
112
113 if(!flag_trace_moy)
114 {
115 for(j=0;j<nb_max_bolo;j++) y[j]+=xbol(j);
116 ipas--;
117 if(ipas<=0)
118 {
119 ipas=lissage;
120 for(j=0;j<nb_max_bolo;j++) y[j]=y[j]/(double)lissage;
121 montracen(fen,nb_max_bolo,x,y);
122 for(j=0;j<nb_max_bolo;j++) y[j]=0;
123 }
124 }
125
126
127
128
129
130 temps_per[indice_per]=x;
131 indice_per++;
132// symbole(fen,x,y[0],6,rond,1,rouge);
133
134 default : break;
135 }
136
137}
138
139
Note: See TracBrowser for help on using the repository browser.