#include "diabolo.h" #include "fichier.h" //#include "acqui.h" #include "controle.h" extern F_entete *E; extern F_block_desc *BD; extern F_block_param *BP; extern F_donne * T; // tableau courant de donnee extern char * nom_du_fichier; unsigned long temps_debut_dia2; //--------------------------------------------------------------------------------------- //--------------- ecrit les fichiers DIA2 ------------------------------- //--------------------------------------------------------------------------------------- void ecrit_fichier_dia2(F_donne d,unsigned long temps_cntl,unsigned long temps_mac) // ecrit les valeurs bolo et synchro { int nl=BD->n_ligne_don; E->tempsfin=temps_mac; // comme ca bon a la fin du fichier if(!E->tempsdebut) E->tempsdebut=temps_mac; // parceque mis a zero a l'ouverture du fichier T[nl]=d; if(!nl) BP->temps_controleur_debut=temps_cntl; BP->temps_controleur_fin=temps_cntl; BD->n_ligne_don++; if (BD->n_ligne_don>=max_nb_donne) fich_save_partiel(0); if( (nl%100)==0 ) ecritD(fenetre_fichier,f_bloc,"bloc %d : %d lignes",BD->n_blok+1,nl); if( (nl%100)==0 ) ecritD(fenetre_controle,con_fichier,"%s *",nom_du_fichier); if( (nl%100)==50 ) ecritD(fenetre_controle,con_fichier,"%s ",nom_du_fichier); } void fich_save_partiel(int change) // change==3 -> fin de fichier sans changement de parametres // change==1 -> change un parametre: nouveau block // change==2 -> nouveau fichier, nouvelle serie de mesure // change==0 -> meme fichier nouveau block avec memes parametres { unsigned long ttx; int j,i,n=gg->reglage.horloge.nb_mesures; if((!fenetre(fichier_dia2_1)) && (!fenetre(fichier_dia2_2))) return; if (change!=2) { for(j=0;jbol_per[j][i]=gg->bol_per[j][i]; if(fenetre(fichier_dia2_1)) { position(fichier_dia2_1,fin_f); ecritF(fichier_dia2_1,sizeof(F_block_desc),BD); // ecrit l'entete partielle ecritF(fichier_dia2_1,sizeof(F_block_param),BP); // ecrit l'entete partielle ecritF(fichier_dia2_1,(long)E->long_donne*(long)BD->n_ligne_don,T); // ecrit le block de data } if(fenetre(fichier_dia2_2)) { position(fichier_dia2_2,fin_f); ecritF(fichier_dia2_2,sizeof(F_block_desc),BD); // ecrit l'entete partielle ecritF(fichier_dia2_2,sizeof(F_block_param),BP); // ecrit l'entete partielle ecritF(fichier_dia2_2,(long)E->long_donne*(long)BD->n_ligne_don,T); } } if( (change==0) ou (change==2) ) lit_data_telescope(); // debut fichier ou apres block complet BD->n_ligne_don=0; BP->temps_controleur_debut=BP->temps_controleur_fin; BD->n_blok++; BP->reglage=gg->reglage; BD->change=change; BD->bololut=0; if( (change==0) ou (change==1) ) { GetDateTime(&ttx); // printf(" temps debut fichier = %d temps courant=%d \n",E->tempsdebut,ttx); if(gg->scan_en_cours) temps_debut_dia2=ttx; if( (!gg->scan_en_cours) && ( (ttx-temps_debut_dia2) > temps_max_fichier) ) { // printf(" fichier Diabolo sans scan de plus de 5 minutes: fich_new \n"); GetDateTime(&temps_debut_dia2); // pour etre sur de ne pas le faire deux fois fich_new(0,0); } } if(change==3) change=0; BD->change=change; } void exec_DIA2(int fen,int item,double valeur,...) // exec du fichier lui_meme // apellé pour les deux fichiers DIA2 ouverts et fermés { switch(item) { case ouverture : if( (fen!=fichier_dia2_1) && (fen!=fichier_dia2_2) ) {lit_fichier_DIA2(fen);break;} gg->fichier_dia2_ouvert=1; E->tempsdebut=0; E->tempsfin=0; // temps de debut et fin de fichier litD(fenetre_fichier,f_comment,E->commentaires); // commentaires à la main ecritF(fen,(long)E->long_entete,E); // printf("fabrique fichier : %s \n",titre(fen)); GetDateTime(&temps_debut_dia2); break; case fermeture : if( (fen!=fichier_dia2_1) && (fen!=fichier_dia2_2) ) break; gg->fichier_dia2_ouvert=0; fich_save_partiel(3); // litD(fenetre_fichier,f_comment,E->commentaires); // ecritD(fenetre_fichier,f_comment,"../.."); break; } }