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