source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/fichier_diabolo.c@ 637

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

archediab version 24 initial import

File size: 3.9 KB
RevLine 
[637]1#include "diabolo.h"
2#include "fichier.h"
3//#include "acqui.h"
4#include "controle.h"
5
6
7extern F_entete *E;
8extern F_block_desc *BD;
9extern F_block_param *BP;
10extern F_donne * T; // tableau courant de donnee
11
12extern char * nom_du_fichier;
13
14unsigned long temps_debut_dia2;
15
16
17//---------------------------------------------------------------------------------------
18//--------------- ecrit les fichiers DIA2 -------------------------------
19//---------------------------------------------------------------------------------------
20
21
22
23void ecrit_fichier_dia2(F_donne d,unsigned long temps_cntl,unsigned long temps_mac) // ecrit les valeurs bolo et synchro
24{
25int nl=BD->n_ligne_don;
26
27E->tempsfin=temps_mac; // comme ca bon a la fin du fichier
28if(!E->tempsdebut) E->tempsdebut=temps_mac; // parceque mis a zero a l'ouverture du fichier
29
30T[nl]=d;
31if(!nl) BP->temps_controleur_debut=temps_cntl;
32BP->temps_controleur_fin=temps_cntl;
33BD->n_ligne_don++; if (BD->n_ligne_don>=max_nb_donne) fich_save_partiel(0);
34if( (nl%100)==0 ) ecritD(fenetre_fichier,f_bloc,"bloc %d : %d lignes",BD->n_blok+1,nl);
35
36if( (nl%100)==0 ) ecritD(fenetre_controle,con_fichier,"%s *",nom_du_fichier);
37if( (nl%100)==50 ) ecritD(fenetre_controle,con_fichier,"%s ",nom_du_fichier);
38}
39
40
41
42void fich_save_partiel(int change) // change==3 -> fin de fichier sans changement de parametres
43 // change==1 -> change un parametre: nouveau block
44 // change==2 -> nouveau fichier, nouvelle serie de mesure
45 // change==0 -> meme fichier nouveau block avec memes parametres
46{
47unsigned long ttx;
48int j,i,n=gg->reglage.horloge.nb_mesures;
49
50if((!fenetre(fichier_dia2_1)) && (!fenetre(fichier_dia2_2))) return;
51if (change!=2)
52 {
53 for(j=0;j<nb_max_bolo;j++)
54 for(i=0;i<n;i++) BP->bol_per[j][i]=gg->bol_per[j][i];
55
56 if(fenetre(fichier_dia2_1))
57 {
58 position(fichier_dia2_1,fin_f);
59 ecritF(fichier_dia2_1,sizeof(F_block_desc),BD); // ecrit l'entete partielle
60 ecritF(fichier_dia2_1,sizeof(F_block_param),BP); // ecrit l'entete partielle
61 ecritF(fichier_dia2_1,(long)E->long_donne*(long)BD->n_ligne_don,T); // ecrit le block de data
62 }
63 if(fenetre(fichier_dia2_2))
64 {
65 position(fichier_dia2_2,fin_f);
66 ecritF(fichier_dia2_2,sizeof(F_block_desc),BD); // ecrit l'entete partielle
67 ecritF(fichier_dia2_2,sizeof(F_block_param),BP); // ecrit l'entete partielle
68 ecritF(fichier_dia2_2,(long)E->long_donne*(long)BD->n_ligne_don,T);
69 }
70
71 }
72if( (change==0) ou (change==2) ) lit_data_telescope(); // debut fichier ou apres block complet
73
74BD->n_ligne_don=0;
75BP->temps_controleur_debut=BP->temps_controleur_fin;
76
77BD->n_blok++;
78BP->reglage=gg->reglage;
79BD->change=change;
80BD->bololut=0;
81
82if( (change==0) ou (change==1) )
83 {
84 GetDateTime(&ttx);
85// printf(" temps debut fichier = %d temps courant=%d \n",E->tempsdebut,ttx);
86 if(gg->scan_en_cours) temps_debut_dia2=ttx;
87 if( (!gg->scan_en_cours) && ( (ttx-temps_debut_dia2) > temps_max_fichier) )
88 {
89// printf(" fichier Diabolo sans scan de plus de 5 minutes: fich_new \n");
90 GetDateTime(&temps_debut_dia2); // pour etre sur de ne pas le faire deux fois
91 fich_new(0,0);
92 }
93 }
94if(change==3) change=0;
95BD->change=change;
96}
97
98
99
100
101void exec_DIA2(int fen,int item,double valeur,...) // exec du fichier lui_meme
102 // apellé pour les deux fichiers DIA2 ouverts et fermés
103{
104switch(item)
105 {
106 case ouverture :
107 if( (fen!=fichier_dia2_1) && (fen!=fichier_dia2_2) ) {lit_fichier_DIA2(fen);break;}
108 gg->fichier_dia2_ouvert=1;
109 E->tempsdebut=0; E->tempsfin=0; // temps de debut et fin de fichier
110 litD(fenetre_fichier,f_comment,E->commentaires); // commentaires à la main
111 ecritF(fen,(long)E->long_entete,E);
112// printf("fabrique fichier : %s \n",titre(fen));
113 GetDateTime(&temps_debut_dia2);
114 break;
115
116 case fermeture :
117 if( (fen!=fichier_dia2_1) && (fen!=fichier_dia2_2) ) break;
118 gg->fichier_dia2_ouvert=0;
119 fich_save_partiel(3);
120
121// litD(fenetre_fichier,f_comment,E->commentaires);
122// ecritD(fenetre_fichier,f_comment,"../..");
123 break;
124
125 }
126}
127
Note: See TracBrowser for help on using the repository browser.