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