1 | //#define mode taillesymbole
|
---|
2 | /*
|
---|
3 | Le fichier de données diabolo est un fichier mac de type 'DIA2' qui contient
|
---|
4 | une suite d'enregistrements.
|
---|
5 |
|
---|
6 | Il commence par une entete correspondant à la structure de type F_entete
|
---|
7 | - cette entete contient
|
---|
8 |
|
---|
9 | On a ensuite une suite d'enregistrements comportant chacun:
|
---|
10 | - une entete partielle avec les parametres de mesure, y compris les parametres DAC
|
---|
11 | structure de type F_entete_part
|
---|
12 | - une suite de valeur correspondant à chaque point mesuré et contenant:
|
---|
13 | Le temps calculé
|
---|
14 | Les 6 signaux de synchro
|
---|
15 | Les voies 1 à 7 : 5 bolometre + 1 temperature + 1 chauffage regul
|
---|
16 |
|
---|
17 | */
|
---|
18 |
|
---|
19 |
|
---|
20 | enum {bol,bolxx,chauf,pipo}; // types de bolometres
|
---|
21 |
|
---|
22 |
|
---|
23 | #define max_nb_donne 1000L // nombre maxi de donne dans un bloc du fichier
|
---|
24 | #define temps_max_fichier 300 // durée maxi d'un fichier (5 minutes)
|
---|
25 |
|
---|
26 |
|
---|
27 |
|
---|
28 | #define max_nb_mesures 256 // maxi dans une periode de modulation electrique
|
---|
29 |
|
---|
30 | #define nb_ds_table 3 // 4 DS : - signal
|
---|
31 | // - chauffage
|
---|
32 | // - transitoire
|
---|
33 | // pas de mesure de linéarité
|
---|
34 |
|
---|
35 | #define nb_max_bolo 9 // 5 bolo, 1 chauff 1 non util. (MONTER À 11 maxi)
|
---|
36 | #define nb_sync 6 // 1 synchro diode + 5 synchro externes
|
---|
37 |
|
---|
38 |
|
---|
39 | /*
|
---|
40 | long_entete = 272
|
---|
41 | long_entete_part = 2128
|
---|
42 | long_donne = 14
|
---|
43 |
|
---|
44 | */
|
---|
45 |
|
---|
46 |
|
---|
47 | typedef struct // etat de l'ensemble de la manip , aussi pour entete partielle
|
---|
48 | {
|
---|
49 |
|
---|
50 | long duree; // durée d'une periode (en µsec)
|
---|
51 | short nb_mesures; // nombre de mesures dans une periode
|
---|
52 | short temp_mort; // temps mort pour la detection synchrone numerique
|
---|
53 |
|
---|
54 | short diode_etat; // etat des diodes
|
---|
55 | short diode_dure; // duree de periode des diodes
|
---|
56 |
|
---|
57 | short gainbrut[nb_max_bolo]; // valeur du gain codé : (0,1,2,...,15)
|
---|
58 | short gain[nb_max_bolo]; // valeur du gain en vraies valeurs(1,2,4,8,10,...,8000)
|
---|
59 | short dac[4][nb_max_bolo]; // les valeurs des DAC 4 voies en entier (0 à 4095)
|
---|
60 | short phase[nb_max_bolo]; // valeur du dephasage individuel : valeur 0 à 4
|
---|
61 |
|
---|
62 | }
|
---|
63 | etat_bolo;
|
---|
64 |
|
---|
65 |
|
---|
66 |
|
---|
67 | typedef struct {
|
---|
68 | short version; // 1 pour cette version du programme
|
---|
69 |
|
---|
70 | short long_entete; // longueur de l'entete
|
---|
71 | short long_entete_part; // longueur de l'entete partielle
|
---|
72 | short long_donne; // longueur d'une ligne de données
|
---|
73 |
|
---|
74 | unsigned long tempsdebut; // temps de debut de fichier
|
---|
75 | unsigned long tempsfin; // temps de fin de fichier
|
---|
76 | char commentaires[256]; // commentaires à la main
|
---|
77 | } F_entete;
|
---|
78 |
|
---|
79 |
|
---|
80 | typedef struct
|
---|
81 | {
|
---|
82 | short n_ligne_don; // Nombre de lignes de donné dans cet enregistrement
|
---|
83 | // ou nombre d'octets du commentaire
|
---|
84 | short n_blok; // numero du blok dans le fichier
|
---|
85 | short change; // valeur 0 = bloc identique au precedent
|
---|
86 | // valeur 1 = bloc modifié
|
---|
87 | // valeur 2 = debut de prise de donnees
|
---|
88 | // valeur 10 = le block ne contient qu'un commentaire
|
---|
89 |
|
---|
90 | short bololut; // bit 0 à bit 3 ==1 si les courbes bolo ont ete lues
|
---|
91 | } F_block_desc;
|
---|
92 |
|
---|
93 |
|
---|
94 | typedef struct
|
---|
95 | {
|
---|
96 |
|
---|
97 | unsigned long temps_controleur_debut; // en micro/secondes :temps du premier point dans le bloc
|
---|
98 | unsigned long temps_controleur_fin; // en micro/secondes :temps du dernier point dans le bloc
|
---|
99 |
|
---|
100 | etat_bolo eb;
|
---|
101 |
|
---|
102 | short bolo[nb_max_bolo][max_nb_mesures]; // courbe echantillon d'une mesure
|
---|
103 |
|
---|
104 | } F_block_param;
|
---|
105 |
|
---|
106 |
|
---|
107 | typedef struct {
|
---|
108 | short bolo[nb_max_bolo];
|
---|
109 | char sync[nb_sync]; // les synchro en cara (6 signaux)
|
---|
110 | } F_donne;
|
---|
111 |
|
---|
112 |
|
---|
113 | //__________________________ calcul des valeurs vraies en micro/volt ou % de chauffage
|
---|
114 |
|
---|
115 | #define xbol(j) ((1e5*(double)gg->don.bolo[j])/(65536.*((double)(gg->eb.gain[j])))) // en µV
|
---|
116 | #define xsat(j) ((100.*(double)gg->sat[j])/32768.) // 0 à 100%
|
---|
117 | #define xchauf(j) ((100.*(double)gg->don.bolo[j])/32768.) // 0 à 100%
|
---|
118 | #define xtrans(j) ((1e5*(double)gg->trans[j])/(65536.*((double)(gg->eb.gain[j])))) // 0 à 100%
|
---|
119 |
|
---|
120 |
|
---|
121 |
|
---|