source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/h/diabolo.h@ 639

Last change on this file since 639 was 639, checked in by ansari, 26 years ago

archediab 25

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