Ignore:
Timestamp:
Nov 25, 1999, 2:07:25 PM (26 years ago)
Author:
ansari
Message:

archediab 25

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c

    r637 r639  
    55#include "trace.h"
    66#include "menu.h"
    7 
     7#define max_couleur 10
     8
     9static int      ds_bolo_coul[2*nb_max_bolo];
    810
    911       
     
    1416static  int             raz_parasite=2;
    1517
     18void    montracen_ds(int fen,int n,double x,double *y);
    1619
    1720void    exec_trace_DS_suite(int u);
     
    2831static int u=-1;
    2932static flag_err=0;
     33int i;
    3034switch(item)
    3135    {
     
    4650    case ds_temps_mort  :       
    4751    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 
    4874                                calcul_table_DS(synchro_periode);
    4975                                break;
     
    99125void    exec_trace_DS_suite(int u)      // appellé quoiqu'il arrive avec u=0,1,2,.... , npt_DS-1
    100126{
    101 static double y[nb_max_bolo+1],y1[nb_max_bolo+1],y2[nb_max_bolo+1],bb[nb_max_bolo+1];
     127static double y[2*nb_max_bolo],y1[2*nb_max_bolo],y2[2*nb_max_bolo],bb[2*nb_max_bolo];
    102128int j;
    103129static double  phase_mesure[nb_max_bolo],confiance[nb_max_bolo],phase_memoire;
    104 
     130//printf("suite avec u=%d \n");
    105131switch(choix_DS)
    106132        {
     
    119145                                {
    120146                                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]));
    123149                                }
    124                         j=1;    // bolo pur mesurer la phase
    125                         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];
    126152                        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/*                             
    128162                        for(j=0;j<nb_max_bolo;j++)
    129163                                {
    130164                                y1[j]=sin(phase_memoire)*y1[j]+cos(phase_memoire)*y2[j];
    131165                                }
    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*/
    133168                        trace_DS(y1,0);
    134169                        for(j=0;j<nb_max_bolo;j++)
     
    208243
    209244// divise par la norme, trace y puis fait un RAZ
    210 void trace_DS(double *y,int enregistre)         //   y [nb_max_bolo +1 ]
     245void trace_DS(double *y,int enregistre)         //   y [2*nb_max_bolo]
    211246{
    212247double x;
    213 static double yraz[nb_max_bolo];
    214 static double yt[nb_max_bolo+1];
     248static double yraz[2*nb_max_bolo];
     249static double yt[2*nb_max_bolo];
    215250int j,k,moy;
    216 static double yfiltre[nb_max_bolo][10];
     251static double yfiltre[2*nb_max_bolo][10];
    217252static int uf=0;
     253static int scan_ds=0;
    218254x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine;
    219255
     
    231267
    232268
    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;
     269for(j=0;j<2*nb_max_bolo;j++)    yt[j]=y[j];
     270for(j=0;j<2*nb_max_bolo;j++)    y[j]=0;
    235271
    236272//printf(" au debut = %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]);
     
    239275
    240276
    241 for(j=0;j<nb_max_bolo;j++)
     277for(j=0;j<2*nb_max_bolo;j++)
    242278                        {
    243279                        yt[j]/=norme_DS;
     
    251287raz_parasite=0;
    252288selectgra(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]);
     289if(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
    257297
    258298moy=litD(fenetre_trace_DS,ds_moyenne,0L);
     
    262302        uf++;
    263303        if(uf>=moy) uf=0;
    264         for(j=0;j<nb_max_bolo;j++)                                      //  ne moyenne pas le signal de scan
     304        for(j=0;j<2*nb_max_bolo;j++)                                   
    265305                {
    266306                for(k=0;k<moy;k++)      yfiltre[j][k]+=yt[j];
     
    271311//printf(" montracen yt= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]);
    272312//printf(" avant trace : =%g  \n",yt[nb_max_bolo]);
    273 montracen(fenetre_trace_DS,nb_max_bolo+1,x,yt);
    274 
     313montracen_ds(fenetre_trace_DS,2*nb_max_bolo,x,yt);
    275314if(!(graph->scroll_courbe) && litD(fenetre_trace_DS,ds_retour,0L) &&
    276315                 ( (x<graph->xmin) ou (x>graph->xmax) ))
     
    415454}
    416455
     456
     457
     458void    montracen_ds(int fen,int n,double x,double *y)
     459{
     460int i,cc;
     461double yy[max_couleur];   // 0=rien : 1 2=bolo0 // 3 4 =bolo
     462for(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        }
     468tracen(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.