| [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 |  | 
|---|