
;+ ***********************************************************************
; NAME:
;	LECP1D
;
; PURPOSE:
;	LECTURE DE FICHIER DE POSITIONS 1D AU FORMAT HELIO	
;
; CATEGORY:
;	NRH1 Positions
;
; CALLING SEQUENCE:
;	LECP1D , Unit, Tabl, Struc
;
; INPUTS:
;	UNIT	Unite logique associee au fichier
;	
; KEYWORD PARAMETERS:
;	FICHIER	Nom du fichier, sinon, nom du fichier dans NRH1_GLOBAL
;	DEBUT	Heure de debut('hh:mn:ss:ccc')
;	FIN	Heure de fin
;
; OUTPUTS:
;	TABL	Tableau de donnees
;	STRUCT	Structure d'informations
;
;                        tabl ........ Tableau contenant les Donnees Lues
;                                      tableau a 3 dimemsions
;
;                          tabl(numim,0, *) = No d'Image ou le sursaut apparait
;                          tabl(numim,1, *) = Canal
;                          tabl(numim,2, *) = Amplitude
;                          tabl(numim,3, *) = Flux
;                          tabl(numim,4, *) = Diametre
;                                 |   |  |
;                                 |   |  |
;                                 |   |  +--> indice temporel 
;                                 |   +-----> Type d'information
;                                 +---------> Numero du sursaut
;          
;                       struc ....... Descripteur des Donnees Lues
;
;                             struc.Lun = unite logique assignee au fichier
;                             struc.Hdeb = Temps de debut de lecture
;                             struc.Hfin = Temps de fin de lecture
;                             struc.type = Information de type chaine de caract
;                                          ('Position 1D')
;                             struc.tabe(0)  =  No de l'image lue 
;                             struc.tabe(1)  =  Temps 
;                             struct.tabe(2)  =  nb de points de la position 
;
; COMMON BLOCKS:
;	NRH1_GLOBAL
;
; PROCEDURE:
;	Cette procedure appelle LITPOS1D
;
; MODIFICATION HISTORY: (bonmartin@obspm.fr)
;	20/11/98	adapte du logiciel XHELIO (JB)
;-*******************************************************************

PRO LECP1D , n, tabl, struc,FICHIER = fichier, DEBUT = debut,FIN = fin


COMMON NRH1_GLOBAL, Nomfich,FichInfo    
;
;
;* --------------------------- *
;*     Test de la syntaxe      *
;* --------------------------- *
;

;
IF N_PARAMS() LE 2 THEN BEGIN

   Print, 'La variable et/ou la structure de sortie n''ont pas ete specifiee'
       Print, 'Syntaxe: LECP1D, UniteLogique, VariableSortie, StrucSortie', $
        '[,Fichier=''NomFichier''] [Debut=''13:45:...''] [Fin=''13:50:..'']'
       Print, ''
       MESSAGE, ' erreur.'
ENDIF

;
;* ----------------------------------- *
;*    Acquisition du nom du fichier    *
;* ----------------------------------- *
;

;                              
;
; declaration de la variable chaine de caractere contenant le nom du fichier
;
NomFichier=''
;
; affectation de cette variable
;
NomFichier=NomFich(n)

IF N_ELEMENTS(Fichier) NE '' THEN NomFichier=Fichier
IF NomFichier EQ '' THEN READ, 'Nom du fichier de Position 1D :', NomFichier
IF N_ELEMENTS(Fichier) EQ '' THEN Print, 'Fichier lu = ',NomFichier
;
Fichier = NomFichier
NomFichier = !Chemin + Fichier

;
;* --------------------------------------------------------- *
;*	    Lecture du Descripteur de fichier                *
;*  et memorisation dans le tableau de structure du noyau    *
;*        des Informations Relatives aux Donnees lues        *
;* --------------------------------------------------------- *

Litentete, n, Nomfichier, file

CLOSE,n
NomFich(n) = Fichier
FichInfo(n)= File
NomFich(0) = STRING(n)

;
;* -------------------------------------- *
;*	Calcul du nombre de positions     *
;*	contenus dans ce fichier          *
;* -------------------------------------- *
;
Nbim = File.nbpix(1)/File.facbloc(1)
nbtete=file.nbtete
;
;* -------------------------------------------------------- *
;*	Prise en compte des heures passees en interface     *
;* -------------------------------------------------------- *
;  

IF N_ELEMENTS(debut) NE 0 THEN BEGIN
    tempdeb = hms(debut)             ; conversion en milliseconde
    ;
    ;	Cadrage de l'intervale de temps demande avec celui des donnees
    ;    contenu dans le fichier
   
    IF (tempdeb LT File.heurDeb) OR (tempdeb GT File.heurfin) THEN BEGIN
         tempdeb = file.heurdeb
    ENDIF 
ENDIF   ELSE tempdeb = File.HeurDeb
; 
IF N_ELEMENTS(fin) NE 0 THEN BEGIN
    tempfin = hms(fin)
    IF (tempfin LT File.heurDeb) OR (tempfin GT File.heurfin) THEN BEGIN
         tempfin = file.heurfin
      ENDIF
ENDIF  ELSE tempfin = File.Heurfin

IF tempfin LT tempdeb THEN BEGIN
       tempfin = file.heurfin
ENDIF     
;
;* --------------------------------------------------------------------------- *
;*	Lecture des donnees demandees et definition des variables de sortie    *
;* --------------------------------------------------------------------------- *
Tabl  = FLTARR(Nbim,5,FichInfo(n).nbpix(0))
if(file.imint eq 0)then vinfotbl=fltarr(nbtete,nbim) $
                   else vinfotbl=lonarr(nbtete,nbim) 

FOR image = 0L,nbim-1L DO $
Begin
  ;
  ;  Appel a la fonction de lecture
  ;

  CALL_PROCEDURE,'LitPos1D', n, Tableau, TabInfo, image, $
                  TEMPDB=tempdeb, TEMPFI=tempfin
  Tabl(image,*,*) = Tableau
  vinfotbl(*,image)=tabinfo
ENDFOR
;
; Creation de la structure d'informations relative 
; tableau de sortie contenant les donnees
;

Struc      = { lun:0l, Hdeb:0l, hFin:0l,type : '', $
			tabe : lonarr(nbtete,nbim) }

;
;* ----------------------------------------------------- *
;*	Remplissage de la structure d'informations       *
;* ----------------------------------------------------- *
;

Struc.Hdeb = tempdeb
Struc.Hfin = tempfin
Struc.Lun  = n
Struc.Type = 'Position : '  
STruc.tabe = vinfotbl

;
;* ------------------------------- *
;*	Modification du prompt     *
;* ------------------------------- *
;
!Prompt = 'IDL_'+NomFich(n)+'_'+STRCOMPRESS(STRING(n),/remove_all)+'> '
;
END       
