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

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

archediab version 24 initial import

File size: 6.7 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
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
59
60
61typedef 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
74typedef 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
90typedef 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
113typedef 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
172extern stglob *gg;
173
174
175void tache_rapide(void);
176
177
178void emission_telecommande(int direction,void * tc); // telecommande une chaine de 10 mots
179void emission_tc_reduite(unsigned char mot1,unsigned char mot2,unsigned char mot3);
180
181void param_reglage(void);
182
183void montracen(int fen,int n,double x,double*y);
184int bolo_rouge(void); // l'indice du bolo rouge
185
186void rafraichis_fenetres(void);
187
188
189void traite_block_journal (block_type_journal* blk);
190void traite_block_reglage (block_type_reglage* blk);
191void traite_block_dilution (block_type_dilution* blk);
192void traite_block_gps (block_type_gps* blk);
193void traite_block_une_periode (block_type_une_periode* blk);
194void traite_block_bolo_comprime (block_type_bolo_comprime* blk);
195void traite_block_bolo (block_type_bolo* blk);
196void traite_block_sst (block_type_sst* blk);
197void traite_block_synchro_sol (block_type_synchro_sol* blk);
198
199#ifdef transmet_data_brute
200void traite_block_data_brute (block_type_data_brute* blk);
201#endif
202
203
Note: See TracBrowser for help on using the repository browser.