Skip to content
Snippets Groups Projects
sta-fr22.pl 2.82 KiB
Newer Older
#!/usr/bin/perl -w
#
# sta-fr22.pl
#
#  Genere un fichier des stations pour cascade a partir des fichiers
#  Seabird .btl
#
# $Id J Grelet may 2011$
#
use strict; # necessite de declarer toutes les variables globales
#use diagnostics;

use Time::Local;
use Date::Manip;
use File::Basename;
use Data::Dumper;

#------------------------------------------------------------------------------
# Les variables globales
#------------------------------------------------------------------------------
# fichier de sortie ASCII:
my  $sta_file = "FR22_sta.list";

# fichiers bouteille seabird .btl
my  $sbe_file;

my $ECHO = undef;

my ($s_date, $e_date, $date, $mois, $jour, $annee, $heure, $min, $time, $e_time);
my  $station;

#------------------------------------------------------------------------------
# usage()
#------------------------------------------------------------------------------	
sub usage() {
  print STDERR "\nusage: sta-fr22.pl [options] <files>\n\n";
  print STDERR   "examples:\n\$ perl sta-fr22.pl ../../CTD/data/FR22*.btl
  ../../CTD/data/fr22*.btl\n"; 
  exit 1;
}
#------------------------------------------------------------------------------
# Debut du programme principal
#------------------------------------------------------------------------------
&Date_Init( "TZ=UTC" );
&usage if( $#ARGV == -1);

# ouvre les fichiers de sortie
open( STA_FILE, "+> $sta_file" ) or die "Can't open file : $sta_file\n";

# parcourt des fichiers .btl passes en argument sur la ligne de commande
for( my $i = 0; $i <= $#ARGV; $i++ ){
  my $fileName = $ARGV[$i];

  # ouverture du fichier
  open( DATA_FILE, $fileName );
  print STDERR  "\nLit: $fileName  = " if defined $ECHO;

  # recupere le numero de la station dans le nom du fichier
  ($station) = ($fileName =~ m/FR22(\d{3})/i);

  # on lit le fichier bouteille
  while( <DATA_FILE> ){  
    # decode la date et heure de debut de station	  
    if( /System UpLoad Time =\s+(\.*)/)	{ # a modifier suivant le contexte
      ($time)  = /System UpLoad Time =\s+(\w+\s+\d+\s+\d+\s+\d+:\d+:\d+)/;	
      $date=&ParseDate($time);
      $s_date = &UnixDate($date,"%d/%m/%Y %H:%M:%S");
     }
     # decode la date de chaque prelevement
     if( /^\s+\d+\s+\w+\s+\d+\s+\d+/) {
       ($time) = /\s+\d+\s+(\w+\s+\d+\s+\d+)/;	
       $date = &ParseDate($time);
       $e_date = &UnixDate($date,"%d/%m/%Y");	      
     }
     # decode l'heure sur la ligne suivante
     if( /\s+(\d+:\d+:\d+)/) {
       ($time) = /\s+(\d+:\d+:\d+)/;	
       $date = &ParseDate($time);
       $e_time = &UnixDate($date,"%H:%M:%S");	      
      }
  }
  # pour chaque fichier, on garde la date et heure de la derniere bouteille
  # impression a l'ecran
  printf STDERR "%d %s %s %s\n", $station, $s_date,$e_date,$e_time;

  # impression dans le fichier 
  printf STA_FILE "%d %s %s %s\n", $station, $s_date,$e_date,$e_time; 
}  

printf STDERR "\n";;