Changeset 639 in Sophya for trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c
- Timestamp:
- Nov 25, 1999, 2:07:25 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c
r637 r639 5 5 #include "trace.h" 6 6 #include "menu.h" 7 7 #define max_couleur 10 8 9 static int ds_bolo_coul[2*nb_max_bolo]; 8 10 9 11 … … 14 16 static int raz_parasite=2; 15 17 18 void montracen_ds(int fen,int n,double x,double *y); 16 19 17 20 void exec_trace_DS_suite(int u); … … 28 31 static int u=-1; 29 32 static flag_err=0; 33 int i; 30 34 switch(item) 31 35 { … … 46 50 case ds_temps_mort : 47 51 case ds_temps_mort+1000 : 52 53 54 case ds_bolo_couleur : 55 case ds_bolo_couleur+1 : 56 case ds_bolo_couleur+2 : 57 case ds_bolo_couleur+3 : 58 case ds_bolo_couleur+4 : 59 case ds_bolo_couleur+5 : 60 case ds_bolo_couleur+6 : 61 case ds_bolo_couleur+7 : 62 case ds_bolo_couleur+8 : 63 case ds_bolo_couleur+9 : 64 65 for(i=0;i<max_couleur;i+=2) 66 { 67 ds_bolo_coul[i]=litD(fen,ds_bolo_couleur+i,0L)-1; // 0=rien : 1=bolo0 // 2=bolo1 68 if( (ds_bolo_coul[i]<1) ou (ds_bolo_coul[i]>nb_max_bolo) ) ds_bolo_coul[i]=0; 69 if (ds_bolo_coul[i]<=24) ds_bolo_coul[i+1]=ds_bolo_coul[i]+24; 70 printf(" i=%d bolo=%d ",i,ds_bolo_coul[i]); 71 } 72 printf("\n"); 73 48 74 calcul_table_DS(synchro_periode); 49 75 break; … … 99 125 void exec_trace_DS_suite(int u) // appellé quoiqu'il arrive avec u=0,1,2,.... , npt_DS-1 100 126 { 101 static double y[ nb_max_bolo+1],y1[nb_max_bolo+1],y2[nb_max_bolo+1],bb[nb_max_bolo+1];127 static double y[2*nb_max_bolo],y1[2*nb_max_bolo],y2[2*nb_max_bolo],bb[2*nb_max_bolo]; 102 128 int j; 103 129 static double phase_mesure[nb_max_bolo],confiance[nb_max_bolo],phase_memoire; 104 130 //printf("suite avec u=%d \n"); 105 131 switch(choix_DS) 106 132 { … … 119 145 { 120 146 phase_mesure[j]=atan2(y1[j],y2[j]); 121 confiance[j]= log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j]));122 printf(" %d°(%2.1f) ",degre(phase_mesure[j]),confiance[j]);147 confiance[j]=bb[j]*bb[j]; 148 if(confiance[j]) confiance[j]=log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j])); 123 149 } 124 j= 1; // bolo pur mesurer la phase125 phase_memoire= phase_mesure[j];150 j=5; // bolo pur mesurer la phase 151 phase_memoire=0.95*phase_memoire+0.05*phase_mesure[j]; 126 152 ecritD(fenetre_trace_DS,ds_phase,"%d°",degre(phase_memoire)); 127 printf(": phase memoire=%g \n",phase_memoire); 153 printf(" phase=%d°(%2.1f) \n",degre(phase_mesure[j]),confiance[j]); 154 // printf(": phase memoire=%g \n",phase_memoire); 155 // printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 156 for(j=0;j<nb_max_bolo;j++) 157 { 158 y1[j+nb_max_bolo]=y2[j]; 159 } 160 161 /* 128 162 for(j=0;j<nb_max_bolo;j++) 129 163 { 130 164 y1[j]=sin(phase_memoire)*y1[j]+cos(phase_memoire)*y2[j]; 131 165 } 132 // printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 166 printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 167 */ 133 168 trace_DS(y1,0); 134 169 for(j=0;j<nb_max_bolo;j++) … … 208 243 209 244 // divise par la norme, trace y puis fait un RAZ 210 void trace_DS(double *y,int enregistre) // y [ nb_max_bolo +1]245 void trace_DS(double *y,int enregistre) // y [2*nb_max_bolo] 211 246 { 212 247 double x; 213 static double yraz[ nb_max_bolo];214 static double yt[ nb_max_bolo+1];248 static double yraz[2*nb_max_bolo]; 249 static double yt[2*nb_max_bolo]; 215 250 int j,k,moy; 216 static double yfiltre[ nb_max_bolo][10];251 static double yfiltre[2*nb_max_bolo][10]; 217 252 static int uf=0; 253 static int scan_ds=0; 218 254 x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine; 219 255 … … 231 267 232 268 233 for(j=0;j< nb_max_bolo;j++) yt[j]=y[j];234 for(j=0;j< nb_max_bolo;j++) y[j]=0;269 for(j=0;j<2*nb_max_bolo;j++) yt[j]=y[j]; 270 for(j=0;j<2*nb_max_bolo;j++) y[j]=0; 235 271 236 272 //printf(" au debut = %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); … … 239 275 240 276 241 for(j=0;j< nb_max_bolo;j++)277 for(j=0;j<2*nb_max_bolo;j++) 242 278 { 243 279 yt[j]/=norme_DS; … … 251 287 raz_parasite=0; 252 288 selectgra(fenetre_trace_DS); 253 yt[nb_max_bolo]=(0.95*graph->ymin+0.05*graph->ymax) + 254 + ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) * 0.9 * (graph->ymax-graph->ymin); 255 //printf(" signal subscan=%g ",yt[nb_max_bolo]); 256 //printf(" avant moyenne= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 289 if(scan_ds != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ) 290 { 291 if(scan_ds) rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,rouge); // trace le segment x1,y1 - x2,y2 292 else rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,bleu); // trace le segment x1,y1 - x2,y2 293 294 scan_ds = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ; 295 } 296 257 297 258 298 moy=litD(fenetre_trace_DS,ds_moyenne,0L); … … 262 302 uf++; 263 303 if(uf>=moy) uf=0; 264 for(j=0;j< nb_max_bolo;j++) // ne moyenne pas le signal de scan304 for(j=0;j<2*nb_max_bolo;j++) 265 305 { 266 306 for(k=0;k<moy;k++) yfiltre[j][k]+=yt[j]; … … 271 311 //printf(" montracen yt= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 272 312 //printf(" avant trace : =%g \n",yt[nb_max_bolo]); 273 montracen(fenetre_trace_DS,nb_max_bolo+1,x,yt); 274 313 montracen_ds(fenetre_trace_DS,2*nb_max_bolo,x,yt); 275 314 if(!(graph->scroll_courbe) && litD(fenetre_trace_DS,ds_retour,0L) && 276 315 ( (x<graph->xmin) ou (x>graph->xmax) )) … … 415 454 } 416 455 456 457 458 void montracen_ds(int fen,int n,double x,double *y) 459 { 460 int i,cc; 461 double yy[max_couleur]; // 0=rien : 1 2=bolo0 // 3 4 =bolo 462 for(i=0;i<max_couleur;i++) 463 { 464 cc=ds_bolo_coul[i]; 465 if(cc && (cc<=2*nb_max_bolo) ) yy[i]=y[cc-1]; 466 else yy[i]=0; 467 } 468 tracen(fen,max_couleur,x,yy); 469 // printf("0=%g 1=%g 2=%g \n",yy[0],yy[1],yy[2]); 470 } 471
Note:
See TracChangeset
for help on using the changeset viewer.