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

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

archediab 28 vol

File size: 7.4 KB
Line 
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#define acquisition_PCI ( (tt->PCI_actif==1) ou (tt->PCI_actif==4) )
9#define acquisition_avec_telecommande (tt->PCI_actif==4)
10
11/*
12Le fichier de données diabolo est un fichier mac de type 'DIA2' qui contient
13 une suite d'enregistrements.
14
15Il commence par une entete correspondant à la structure de type F_entete
16 - cette entete contient
17
18On 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
59extern param_bolo parametr; // liste bolo dans le programme principal
60extern reglage_bolo reglage_standard[8]; // liste bolo dans le programme principal
61
62
63typedef 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
76typedef 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
92typedef 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
115typedef 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
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
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
134 double corel[nb_max_bolo+3+nb_photo_diodes]; // données apres corellation eventuelle
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
177extern stglob *gg;
178
179
180void tache_rapide(void);
181
182
183void emission_telecommande(int direction,void * tc); // telecommande une chaine de 10 mots
184void emission_tc_reduite(unsigned char mot1,unsigned char mot2,unsigned char mot3);
185
186void param_reglage(void);
187
188void montracen(int fen,int n,double x,double*y);
189int bolo_rouge(void); // l'indice du bolo rouge
190
191void rafraichis_fenetres(void);
192
193
194void traite_block_journal (block_type_journal* blk);
195void traite_block_reglage (block_type_reglage* blk);
196void traite_block_dilution (block_type_dilution* blk);
197void traite_block_gps (block_type_gps* blk);
198void traite_block_une_periode (block_type_une_periode* blk);
199void traite_block_bolo_comprime (block_type_bolo_comprime* blk);
200void traite_block_bolo (block_type_bolo* blk);
201void traite_block_sst_brut (block_type_sst* blk);
202void traite_block_sst_comprime_brut (block_type_sst_comprime* blk);
203void traite_block_sst (block_type_sst* blk);
204void traite_block_sst_comprime (block_type_sst_comprime* blk);
205void traite_block_gyro (block_type_gyro* blk);
206void traite_block_gyro_comprime (block_type_gyro_comprime* blk);
207void traite_block_synchro_sol (block_type_synchro_sol* blk);
208
209#ifdef transmet_data_brute
210void traite_block_data_brute (block_type_data_brute* blk);
211#endif
212
213
Note: See TracBrowser for help on using the repository browser.