| [637] | 1 | #include "manip.h"
 | 
|---|
 | 2 | #include "choix_acquisition.h"
 | 
|---|
 | 3 | #include "archeops.h"
 | 
|---|
 | 4 | #include "choix_param.h"
 | 
|---|
 | 5 | #include "structure.h"
 | 
|---|
 | 6 | #include "fenetres_diabolo.h"
 | 
|---|
 | 7 | 
 | 
|---|
| [649] | 8 | #define   acquisition_PCI  ( (tt->PCI_actif==1) ou  (tt->PCI_actif==4) ) 
 | 
|---|
 | 9 | #define   acquisition_avec_telecommande  (tt->PCI_actif==4) 
 | 
|---|
| [637] | 10 | 
 | 
|---|
 | 11 | /*
 | 
|---|
 | 12 | Le fichier de données diabolo est un fichier mac de type 'DIA2' qui contient 
 | 
|---|
 | 13 |         une suite d'enregistrements.
 | 
|---|
 | 14 |         
 | 
|---|
 | 15 | Il commence par une entete correspondant à la structure de type F_entete
 | 
|---|
 | 16 |         - cette entete contient 
 | 
|---|
 | 17 | 
 | 
|---|
 | 18 | On a ensuite une suite d'enregistrements comportant chacun:
 | 
|---|
 | 19 |         - une entete partielle avec les parametres de mesure, y compris les parametres DAC
 | 
|---|
 | 20 |                 structure de type F_entete_part
 | 
|---|
 | 21 |         - une suite de valeur correspondant à chaque point mesuré et contenant:
 | 
|---|
 | 22 |                         Le temps calculé
 | 
|---|
 | 23 |                         Les 6 signaux de synchro
 | 
|---|
 | 24 |                         Les voies 1 à 7 :  5 bolometre + 1 temperature + 1 chauffage regul
 | 
|---|
 | 25 | 
 | 
|---|
 | 26 | */
 | 
|---|
 | 27 | 
 | 
|---|
 | 28 | 
 | 
|---|
 | 29 | 
 | 
|---|
 | 30 | /*
 | 
|---|
 | 31 |  long_entete            = 272 
 | 
|---|
 | 32 |  long_entete_part       = 2128 
 | 
|---|
 | 33 |  long_donne             = 14 
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | */
 | 
|---|
 | 36 | 
 | 
|---|
 | 37 | 
 | 
|---|
 | 38 | /*  ancienne structure reglage de DIABOLO        (longueur= 12 + 14 *  nb_max_bolo ) */
 | 
|---|
 | 39 | /*      la nouvelle structure  a une longueur de  :     4  +  8 * nb_max_bolo  + automatismes + regul */ 
 | 
|---|
 | 40 | /*typedef struct
 | 
|---|
 | 41 |         {
 | 
|---|
 | 42 |         long    duree;                   durée d'une periode (en unite de 4.8 µsec)             
 | 
|---|
 | 43 |         short   nb_mesures;              nombre de mesures dans une periode entiere 46 à 92     
 | 
|---|
 | 44 |         short   temp_mort;               temps mort pour la detection synchrone numerique       
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 |         short   periode_horloge;         durée d'une periode (en unite de 0.2 µsec), 20 à 80    
 | 
|---|
 | 47 |         short   flag;                    ---------------------------------------------- 
 | 
|---|
 | 48 | 
 | 
|---|
 | 49 |         short   gainbrut[nb_max_bolo];   valeur du gain codé : (0,1,2,...,15)           
 | 
|---|
 | 50 |         short   gain[nb_max_bolo];       valeur du gain en vraies valeurs(1,2,4,8,10,...,100) 
 | 
|---|
 | 51 |         short   dac[4][nb_max_bolo];     les valeurs des DAC 4 voies en entier (0 à 4095)       
 | 
|---|
 | 52 |         short   phase[nb_max_bolo];      valeur du dephasage individuel : valeur  0  à  1       
 | 
|---|
 | 53 | 
 | 
|---|
 | 54 |         }
 | 
|---|
 | 55 |         reglage_bolo;
 | 
|---|
 | 56 | */
 | 
|---|
 | 57 | 
 | 
|---|
 | 58 | 
 | 
|---|
 | 59 | extern   param_bolo     parametr;               // liste bolo dans le programme principal
 | 
|---|
| [639] | 60 | extern   reglage_bolo   reglage_standard[8];            // liste bolo dans le programme principal
 | 
|---|
| [637] | 61 | 
 | 
|---|
 | 62 | 
 | 
|---|
 | 63 | typedef struct  {
 | 
|---|
 | 64 |                 short   version;                // 2 pour cette version du programme
 | 
|---|
 | 65 |                                                 
 | 
|---|
 | 66 |                 short   long_entete;            // longueur de l'entete 
 | 
|---|
 | 67 |                 short   long_entete_part;       // longueur de l'entete partielle
 | 
|---|
 | 68 |                 short   long_donne;             // longueur d'une ligne de données
 | 
|---|
 | 69 | 
 | 
|---|
 | 70 |                 unsigned long tempsdebut;       // temps de debut de fichier (temps mac en sec) 
 | 
|---|
 | 71 |                 unsigned long tempsfin;         // temps de fin de fichier   (temps mac en sec)
 | 
|---|
 | 72 |                 char commentaires[256];         // commentaires à la main
 | 
|---|
 | 73 |                 } F_entete;       
 | 
|---|
 | 74 | 
 | 
|---|
 | 75 | 
 | 
|---|
 | 76 | typedef struct  
 | 
|---|
 | 77 |                 {
 | 
|---|
 | 78 |                 short   n_ligne_don;            // Nombre de lignes de donné dans cet enregistrement
 | 
|---|
 | 79 |                                                 // ou    nombre d'octets du commentaire
 | 
|---|
 | 80 |                 short   n_blok;                 // numero du blok dans le fichier
 | 
|---|
 | 81 |                 short   change;                 // valeur 0 = bloc identique au precedent
 | 
|---|
 | 82 |                                                 // valeur 1 = bloc modifié
 | 
|---|
 | 83 |                                                 // valeur 2 = debut de prise de donnees
 | 
|---|
 | 84 |                                                 // valeur 10 = le block ne contient qu'un commentaire
 | 
|---|
 | 85 |                                                 // valeur 1001 et suivante : block telescope type  th
 | 
|---|
 | 86 |                                                 // valeur 2001 et suivante : block telescope type  tp
 | 
|---|
 | 87 | 
 | 
|---|
 | 88 |                 short   bololut;                //  ancien parametre: bit 0 à bit 3  ==1  si les courbes bolo ont ete lues
 | 
|---|
 | 89 |                 } F_block_desc;
 | 
|---|
 | 90 | 
 | 
|---|
 | 91 | 
 | 
|---|
 | 92 | typedef struct  
 | 
|---|
 | 93 |                 {
 | 
|---|
 | 94 | 
 | 
|---|
 | 95 |                 unsigned long   temps_controleur_debut;         // en micro/secondes :temps du premier point dans le bloc                       
 | 
|---|
 | 96 |                 unsigned long   temps_controleur_fin;           // en micro/secondes :temps du dernier point dans le bloc                       
 | 
|---|
 | 97 |                 
 | 
|---|
 | 98 |                 reglage_bolo    reglage;
 | 
|---|
 | 99 |                 
 | 
|---|
 | 100 |                 short   bol_per[nb_max_bolo][nb_max_mes_per];   //   courbe echantillon d'une mesure
 | 
|---|
 | 101 |                                         
 | 
|---|
 | 102 |                 } F_block_param;          
 | 
|---|
 | 103 | 
 | 
|---|
 | 104 | 
 | 
|---|
 | 105 | //__________________________   calcul des valeurs  vraies en micro/volt 
 | 
|---|
 | 106 | 
 | 
|---|
 | 107 | //#define       xbolbrut(j)     ((1e5*(double)gg->don.don_bolo[j])/(65536.*((double)(gg->reglage.gain[j]))))            // en µV
 | 
|---|
 | 108 | //#define       xbolbrut(jjj)   ((1e7*(double)gg->don.don_bolo[jjj])/(65536.*(double)parametr.bolo_gain[jjj]*gain_ampli(gg->reglage.bolo[jjj])))                // en µV
 | 
|---|
 | 109 | #define xbolbrut(jjj)   bol_micro_volt(gg->don.don_bolo[jjj],(double)parametr.bolo[jjj].bolo_gain*gain_ampli(gg->reglage.bolo[jjj]))    // en µV
 | 
|---|
 | 110 | 
 | 
|---|
 | 111 | #define xbol(jjj)       gg->corel[jjj]
 | 
|---|
 | 112 | 
 | 
|---|
 | 113 | 
 | 
|---|
 | 114 | 
 | 
|---|
 | 115 | typedef struct          // structure globale gg  dans le programme principal
 | 
|---|
 | 116 |         {
 | 
|---|
 | 117 | //      param_bolo      param;                                  // liste bolo dans le programme principal
 | 
|---|
 | 118 |         reglage_bolo    reglage;                                // etat bolo dans le programme principal
 | 
|---|
 | 119 |         
 | 
|---|
| [649] | 120 |         double          temperature_cryo;       // temperature du cryo (0.1K) en K
 | 
|---|
 | 121 |         /* La germanium doit toujours etre en premier par rapport aux autres thermos absolus */
 | 
|---|
 | 122 | 
 | 
|---|
| [637] | 123 |         short           bol_per[nb_max_bolo][nb_max_mes_per];   // table une periode
 | 
|---|
 | 124 | 
 | 
|---|
 | 125 |         
 | 
|---|
 | 126 |         //  ------  données lues en un point:
 | 
|---|
 | 127 |         
 | 
|---|
 | 128 |         double          periode_echantillonage;
 | 
|---|
 | 129 |         unsigned long   temps_cntl;                     //  temps courant de la lecture d'un point
 | 
|---|
 | 130 |         unsigned long   temps_mac;                      //  temps courant de la lecture d'un point
 | 
|---|
 | 131 | 
 | 
|---|
 | 132 |         F_donne         don;
 | 
|---|
 | 133 |         
 | 
|---|
| [649] | 134 |         double          corel[nb_max_bolo+3+nb_photo_diodes];           // données apres corellation eventuelle
 | 
|---|
| [637] | 135 |         
 | 
|---|
 | 136 | 
 | 
|---|
 | 137 | //__________________________________________________________________________________
 | 
|---|
 | 138 |                 // ----------  parametres generaux 
 | 
|---|
 | 139 |         
 | 
|---|
 | 140 |         int     depou_en_cours;                 // la tache de fond est active
 | 
|---|
 | 141 |         
 | 
|---|
 | 142 |         int     trace_ouvert;                   //  pour connaitre les fenetre de trace ouverte
 | 
|---|
 | 143 |                                                 //  1 -->  trace tout  ---  n'est plus utilise
 | 
|---|
 | 144 |                                                 //  2 -->  trace une periode
 | 
|---|
 | 145 |                                                 //  4 -->  trace detection synchrone
 | 
|---|
 | 146 |                                                 //  8 -->  trace ondelette
 | 
|---|
 | 147 |                                                 //  16 --> trace carte des lobes
 | 
|---|
 | 148 |                                                 //  32 ->  une synchro selectuionnée
 | 
|---|
 | 149 |         
 | 
|---|
 | 150 |         int     trace_tout[8];                  //  numero des 8 fenetres trace_tout si elles sont ouvertes                                                                                                                                     
 | 
|---|
 | 151 |         int     fichier_dia2_ouvert;            //  pour connaitre les fichiers ouverts
 | 
|---|
 | 152 |         int     fichier_arch_ouvert;            //  pour connaitre les fichiers ouverts
 | 
|---|
 | 153 |         int     flag_fou;                       //  flag pour transformé de fourier
 | 
|---|
 | 154 |         int     flag_corel;                     //  flag pour transformé de fourier
 | 
|---|
 | 155 |         int     flag_tc_reduite;                //  flag pour telecommandes reduites
 | 
|---|
 | 156 |         int     scan_en_cours;                  // scan en cours pour autoval, sauve fichier et bip de fin de scan
 | 
|---|
 | 157 |         int     compte_subscan;                 // compte les sub scan
 | 
|---|
 | 158 |         int     compte_fichiers_th;             // compte les fichiers telescopr de type th sub scan
 | 
|---|
 | 159 |         int     compte_fichiers_tp;             // compte les fichiers telescopr de type tp  sub scan
 | 
|---|
 | 160 |         int     nb_trace;
 | 
|---|
 | 161 |         double  temps_origine;                  //  origine des temps en secondes pour trace
 | 
|---|
 | 162 | 
 | 
|---|
 | 163 | 
 | 
|---|
 | 164 | 
 | 
|---|
 | 165 | //  ------  pour enregistrement d'une transitoire individuel
 | 
|---|
 | 166 | 
 | 
|---|
 | 167 | 
 | 
|---|
 | 168 | //      int             transilut;                                                                                      // un seul flag pour tous : la table a été lue
 | 
|---|
 | 169 | //      int             transiindice;           le// indice pour ecriture de la table transi
 | 
|---|
 | 170 | //      short   transi[nb_max_bolo][max_nb_transi];// table une periode
 | 
|---|
 | 171 | 
 | 
|---|
 | 172 |         }
 | 
|---|
 | 173 |         stglob;
 | 
|---|
 | 174 | 
 | 
|---|
 | 175 | 
 | 
|---|
 | 176 | 
 | 
|---|
 | 177 | extern  stglob  *gg;
 | 
|---|
 | 178 | 
 | 
|---|
 | 179 | 
 | 
|---|
 | 180 | void    tache_rapide(void);
 | 
|---|
 | 181 | 
 | 
|---|
 | 182 | 
 | 
|---|
 | 183 | void    emission_telecommande(int direction,void * tc); // telecommande une chaine de 10 mots
 | 
|---|
 | 184 | void    emission_tc_reduite(unsigned char mot1,unsigned char mot2,unsigned char mot3);
 | 
|---|
 | 185 | 
 | 
|---|
 | 186 | void    param_reglage(void);
 | 
|---|
 | 187 | 
 | 
|---|
 | 188 | void    montracen(int fen,int n,double x,double*y);
 | 
|---|
 | 189 | int     bolo_rouge(void);               //  l'indice du bolo rouge 
 | 
|---|
 | 190 | 
 | 
|---|
 | 191 | void    rafraichis_fenetres(void);
 | 
|---|
 | 192 | 
 | 
|---|
 | 193 | 
 | 
|---|
 | 194 | void    traite_block_journal            (block_type_journal*            blk);
 | 
|---|
 | 195 | void    traite_block_reglage            (block_type_reglage*            blk);
 | 
|---|
 | 196 | void    traite_block_dilution           (block_type_dilution*           blk);
 | 
|---|
 | 197 | void    traite_block_gps                (block_type_gps*                blk);
 | 
|---|
 | 198 | void    traite_block_une_periode        (block_type_une_periode*        blk);
 | 
|---|
 | 199 | void    traite_block_bolo_comprime      (block_type_bolo_comprime*      blk);
 | 
|---|
 | 200 | void    traite_block_bolo               (block_type_bolo*               blk);
 | 
|---|
| [649] | 201 | void    traite_block_sst_brut           (block_type_sst*                blk);
 | 
|---|
 | 202 | void    traite_block_sst_comprime_brut  (block_type_sst_comprime*       blk);
 | 
|---|
| [637] | 203 | void    traite_block_sst                (block_type_sst*                blk);
 | 
|---|
| [643] | 204 | void    traite_block_sst_comprime       (block_type_sst_comprime*       blk);
 | 
|---|
 | 205 | void    traite_block_gyro               (block_type_gyro*               blk);
 | 
|---|
 | 206 | void    traite_block_gyro_comprime      (block_type_gyro_comprime*      blk);
 | 
|---|
| [637] | 207 | void    traite_block_synchro_sol        (block_type_synchro_sol*        blk);
 | 
|---|
 | 208 | 
 | 
|---|
 | 209 | #ifdef  transmet_data_brute
 | 
|---|
 | 210 | void    traite_block_data_brute         (block_type_data_brute*         blk);
 | 
|---|
 | 211 | #endif
 | 
|---|
 | 212 | 
 | 
|---|
 | 213 | 
 | 
|---|