listHdr
changeset 39 3bddaa514ef5
parent 37 40d85448debf
child 42 80d039881d2c
equal deleted inserted replaced
38:b1b1ef3f4a9a 39:3bddaa514ef5
     1 #!/usr/bin/perl
     1 #!/usr/bin/perl
     2 #======================================================================
     2 #======================================================================
     3 #                    L I S T H D R 
     3 #                    L I S T H D R 
     4 #                    doc: Sat Jan 18 18:41:49 2003
     4 #                    doc: Sat Jan 18 18:41:49 2003
     5 #                    dlm: Wed Nov  9 12:25:36 2016
     5 #                    dlm: Tue Aug  8 16:25:46 2017
     6 #                    (c) 2003 A.M. Thurnherr
     6 #                    (c) 2003 A.M. Thurnherr
     7 #                    uE-Info: 65 0 NIL 0 0 72 10 2 4 NIL ofnI
     7 #                    uE-Info: 102 39 NIL 0 0 72 10 2 4 NIL ofnI
     8 #======================================================================
     8 #======================================================================
     9 
     9 
    10 # Print useful info from the RDI BB header
    10 # Print useful info from the RDI BB header
    11 
    11 
    12 # HISTORY:
    12 # HISTORY:
    38 #	Jan  9, 2016: - added support for PRODUCER data field
    38 #	Jan  9, 2016: - added support for PRODUCER data field
    39 #				  - updated getopts to current perl version
    39 #				  - updated getopts to current perl version
    40 #				  - updated IO library name
    40 #				  - updated IO library name
    41 #				  - adapted to [ADCP_tools_lib.pl]
    41 #				  - adapted to [ADCP_tools_lib.pl]
    42 #	Nov  9, 2016: - BUG: no error on missing files
    42 #	Nov  9, 2016: - BUG: no error on missing files
       
    43 #	Aug  7, 2017: - added LAG_LENGTH
       
    44 #				  - added AMBIGUITY_VELOCITY
       
    45 #	Aug  8, 2017: - added -l)ong listing
    43 
    46 
    44 use Getopt::Std;
    47 use Getopt::Std;
    45 
    48 
    46 ($ADCP_TOOLS) = ($0 =~ m{(.*/)[^/]+});
    49 ($ADCP_TOOLS) = ($0 =~ m{(.*/)[^/]+});
    47 $ADCP_tools_minVersion = 1.4; 
    50 $ADCP_tools_minVersion = 1.4; 
    48 require "$ADCP_TOOLS/ADCP_tools_lib.pl";
    51 require "$ADCP_TOOLS/ADCP_tools_lib.pl";
    49 
    52 
    50 die("Usage: $0 [-s)ummary] <PD0 file[...]>\n")
    53 die("Usage: $0 [-s)ummary] [-l)ong listing] <PD0 file[...]>\n")
    51     unless (&getopts('s') && @ARGV);
    54     unless (&getopts('ls') && @ARGV);
    52 
    55 
    53 if ($opt_s) {
    56 if ($opt_s) {
    54 	print("#!/usr/bin/perl -S list\n");     
    57 	print("#!/usr/bin/perl -S list\n");     
    55 	chmod(0777&~umask,*STDOUT);
    58 	chmod(0777&~umask,*STDOUT);
    56 	print("#ANTS#FIELDS# {id} {serial_number} {transducer_frequency} {number_of_bins} {blanking_distance} {bin_length} {pulse_length}\n");
    59 	print("#ANTS#FIELDS# {id} {serial_number} {transducer_frequency} {number_of_bins} {blanking_distance} {bin_length} {pulse_length}\n");
    65 
    68 
    66 	if ($opt_s) {														# summary ANTS output
    69 	if ($opt_s) {														# summary ANTS output
    67 		my($id) = $ARGV[0];
    70 		my($id) = $ARGV[0];
    68 		$id =~ s/00[0-9]\.000//;										# leave just deployment name for std RDI files
    71 		$id =~ s/00[0-9]\.000//;										# leave just deployment name for std RDI files
    69 		$id =~ s@^.*/([^/]+)@\1@;
    72 		$id =~ s@^.*/([^/]+)@\1@;
    70 		printf("%s %d %d %d %g %d %.1f\n",
    73 		printf("%s %d %.1f %d %g %d %.1f\n",
    71 			$id,$hdr{SERIAL_NUMBER},$hdr{BEAM_FREQUENCY},
    74 			$id,$hdr{SERIAL_NUMBER},$hdr{BEAM_FREQUENCY},
    72 			$hdr{N_BINS},$hdr{BLANKING_DISTANCE},$hdr{BIN_LENGTH},
    75 			$hdr{N_BINS},$hdr{BLANKING_DISTANCE},$hdr{BIN_LENGTH},
    73 			$hdr{TRANSMITTED_PULSE_LENGTH});
    76 			$hdr{TRANSMITTED_PULSE_LENGTH});
    74 		shift;
    77 		shift;
    75 		next;
    78 		next;
    83 		printf("\tINSTRUMENT\t\t\t= %s #%d\n",$hdr{INSTRUMENT_TYPE},$hdr{SERIAL_NUMBER});
    86 		printf("\tINSTRUMENT\t\t\t= %s #%d\n",$hdr{INSTRUMENT_TYPE},$hdr{SERIAL_NUMBER});
    84     } else {
    87     } else {
    85 		printf("\tINSTRUMENT_TYPE\t\t\t= %s\n",$hdr{INSTRUMENT_TYPE});
    88 		printf("\tINSTRUMENT_TYPE\t\t\t= %s\n",$hdr{INSTRUMENT_TYPE});
    86     }
    89     }
    87 	printf("\tCPU_SERIAL_NUMBER\t\t= %s\n",$hdr{CPU_SERIAL_NUMBER})
    90 	printf("\tCPU_SERIAL_NUMBER\t\t= %s\n",$hdr{CPU_SERIAL_NUMBER})
    88 		unless ($hdr{INSTRUMENT_TYPE} eq 'Explorer');
    91 		if ($opt_l && ($hdr{INSTRUMENT_TYPE} ne 'Explorer'));
    89 	printf("\tFIRMWARE\t\t\t= %d.%d\n",$hdr{CPU_FW_VER},$hdr{CPU_FW_REV});
    92 	printf("\tFIRMWARE\t\t\t= %d.%d\n",$hdr{CPU_FW_VER},$hdr{CPU_FW_REV});
    90 	printf("\tBEAM_FREQUENCY\t\t\t= %d kHz\n",$hdr{BEAM_FREQUENCY});
    93 	printf("\tBEAM_FREQUENCY\t\t\t= %.1f kHz\n",$hdr{BEAM_FREQUENCY});
    91 	printf("\tBEAM_ANGLE\t\t\t= %d deg\n",$hdr{BEAM_ANGLE});
    94 	printf("\tBEAM_ANGLE\t\t\t= %d deg\n",$hdr{BEAM_ANGLE}) if $opt_l;
    92 	printf("\tN_BEAMS\t\t\t\t= %d\n",$hdr{N_BEAMS});
    95 	printf("\tN_BEAMS\t\t\t\t= %d\n",$hdr{N_BEAMS}) if $opt_l;
    93 	printf("\tN_DEMODS\t\t\t= %d\n",$hdr{N_DEMODS}) if defined($hdr{N_DEMODS});
    96 	printf("\tTRANSMIT_LAG_DISTANCE\t\t= %g m\n",$hdr{TRANSMIT_LAG_DISTANCE}) if $opt_l;
       
    97 	printf("\tLAG_LENGTH\t\t\t= %d\n",$hdr{LAG_LENGTH}) if $opt_l;
       
    98 	printf("\tN_DEMODS\t\t\t= %d\n",$hdr{N_DEMODS}) if $opt_l && defined($hdr{N_DEMODS});
       
    99 	printf("\tSPEED_OF_SOUND\t\t\t= %d m/s [%s]\n",
       
   100 				$hdr{SPEED_OF_SOUND},
       
   101 				$dta->{SPEED_OF_SOUND_CALCULATED} ? 'from sensors' : 'from settings');
       
   102 	printf("\tAMBIGUITY_VELOCITY\t\t= %g m/s\n",
       
   103 				ambiguity_velocity($hdr{BEAM_FREQUENCY},$hdr{BEAM_ANGLE},$hdr{SPEED_OF_SOUND},$hdr{TRANSMIT_LAG_DISTANCE}));
    94 
   104 
    95 	printf("\tSensors\t\t\t\t: ");
   105 	printf("\tSensors\t\t\t\t: ");
    96 	printf("PRESSURE ") 						if ($hdr{PRESSURE_SENSOR_AVAILABLE});
   106 	printf("PRESSURE ") 						if ($hdr{PRESSURE_SENSOR_AVAILABLE});
    97 	printf("CONDUCTIVITY ") 					if ($hdr{CONDUCTIVITY_SENSOR_AVAILABLE});
   107 	printf("CONDUCTIVITY ") 					if ($hdr{CONDUCTIVITY_SENSOR_AVAILABLE});
    98 	printf("TEMPERATURE ") 						if ($hdr{TEMPERATURE_SENSOR_AVAILABLE});
   108 	printf("TEMPERATURE ") 						if ($hdr{TEMPERATURE_SENSOR_AVAILABLE});
    99 	printf("COMPASS ") 							if ($hdr{COMPASS_AVAILABLE});
   109 	printf("COMPASS ") 							if ($hdr{COMPASS_AVAILABLE});
   100 	printf("PITCH ") 							if ($hdr{PITCH_SENSOR_AVAILABLE});
   110 	printf("PITCH ") 							if ($hdr{PITCH_SENSOR_AVAILABLE});
   101 	printf("ROLL ") 							if ($hdr{ROLL_SENSOR_AVAILABLE});
   111 	printf("ROLL ") 							if ($hdr{ROLL_SENSOR_AVAILABLE});
   102 	print("\n");
   112 	print("\n");
   103 
   113 
   104 	printf("\tFlags\t\t\t\t: ");
   114 	if ($opt_l) {
   105 	printf("XDUCER_HEAD_ATTACHED ") 			if ($hdr{XDUCER_HEAD_ATTACHED});
   115 		printf("\tFlags\t\t\t\t: ");
   106 	printf("CONVEX_BEAM_PATTERN ")				if ($hdr{CONVEX_BEAM_PATTERN});
   116 		printf("XDUCER_HEAD_ATTACHED ") 		if ($hdr{XDUCER_HEAD_ATTACHED});
   107 	printf("CONCAVE_BEAM_PATTERN ") 			if ($hdr{CONCAVE_BEAM_PATTERN});
   117 		printf("CONVEX_BEAM_PATTERN ")			if ($hdr{CONVEX_BEAM_PATTERN});
   108 	print("\n");
   118 		printf("CONCAVE_BEAM_PATTERN ") 		if ($hdr{CONCAVE_BEAM_PATTERN});
   109 
   119 	    print("\n");
   110 
   120 	}
   111 	print("    File Format:\n");
   121 
   112 
   122 	if ($opt_l) {
   113 	printf("\tNUMBER_OF_DATA_TYPES\t\t= %d\n",$hdr{NUMBER_OF_DATA_TYPES});
   123 		print("    File Format:\n");
   114 	printf("\tFIXED_LEADER_BYTES\t\t= %3d bytes\n",$hdr{FIXED_LEADER_BYTES});
   124 		printf("\tNUMBER_OF_DATA_TYPES\t\t= %d\n",$hdr{NUMBER_OF_DATA_TYPES});
   115 	printf("\tENSEMBLE_BYTES\t\t\t= %3d bytes\n",$hdr{ENSEMBLE_BYTES});
   125 		printf("\tFIXED_LEADER_BYTES\t\t= %3d bytes\n",$hdr{FIXED_LEADER_BYTES});
   116 	printf("\tHEADER_BYTES\t\t\t= %3d bytes\n",$hdr{HEADER_BYTES});
   126 		printf("\tENSEMBLE_BYTES\t\t\t= %3d bytes\n",$hdr{ENSEMBLE_BYTES});
   117 	printf("\tVARIABLE_LEADER_BYTES\t\t= %3d bytes\n",$hdr{VARIABLE_LEADER_BYTES});
   127 		printf("\tHEADER_BYTES\t\t\t= %3d bytes\n",$hdr{HEADER_BYTES});
   118 	printf("\tVELOCITY_DATA_BYTES\t\t= %3d bytes\n",$hdr{VELOCITY_DATA_BYTES});
   128 		printf("\tVARIABLE_LEADER_BYTES\t\t= %3d bytes\n",$hdr{VARIABLE_LEADER_BYTES});
   119 	printf("\tCORRELATION_DATA_BYTES\t\t= %3d bytes\n",$hdr{CORRELATION_DATA_BYTES});
   129 		printf("\tVELOCITY_DATA_BYTES\t\t= %3d bytes\n",$hdr{VELOCITY_DATA_BYTES})
   120 	printf("\tECHO_INTENSITY_DATA_BYTES\t= %3d bytes\n",$hdr{ECHO_INTENSITY_DATA_BYTES});
   130 			if defined($hdr{VELOCITY_DATA_BYTES});
   121 	printf("\tPERCENT_GOOD_DATA_BYTES\t\t= %3d bytes\n",$hdr{PERCENT_GOOD_DATA_BYTES});
   131 		printf("\tCORRELATION_DATA_BYTES\t\t= %3d bytes\n",$hdr{CORRELATION_DATA_BYTES})
   122 	printf("\tBT_DATA_BYTES\t\t\t= %3d bytes\n",$hdr{BT_DATA_BYTES})
   132 			if defined($hdr{CORRELATION_DATA_BYTES});
   123 		if ($hdr{BT_PRESENT});
   133 		printf("\tECHO_INTENSITY_DATA_BYTES\t= %3d bytes\n",$hdr{ECHO_INTENSITY_DATA_BYTES})
   124 
   134 			if defined($hdr{ECHO_INTENSITY_DATA_BYTES});
       
   135 		printf("\tPERCENT_GOOD_DATA_BYTES\t\t= %3d bytes\n",$hdr{PERCENT_GOOD_DATA_BYTES})
       
   136 			if defined($hdr{PERCENT_GOOD_DATA_BYTES});
       
   137 		printf("\tBT_DATA_BYTES\t\t\t= %3d bytes\n",$hdr{BT_DATA_BYTES})
       
   138 	        if ($hdr{BT_PRESENT});
       
   139 	}
   125 
   140 
   126 	print("    Coordinate System:\n");
   141 	print("    Coordinate System:\n");
   127 
   142 
   128 	printf("\tHEADING_ALIGNMENT_CORRECTION\t\t= %g deg\n",    
   143 	printf("\tHEADING_ALIGNMENT_CORRECTION\t\t= %g deg\n",    
   129 												$hdr{HEADING_ALIGNMENT_CORRECTION})
   144 												$hdr{HEADING_ALIGNMENT_CORRECTION})
   157 	
   172 	
   158 	
   173 	
   159 	print("    Bin Setup:\n");
   174 	print("    Bin Setup:\n");
   160 	printf("\tN_BINS\t\t\t\t= %d\n",			$hdr{N_BINS});
   175 	printf("\tN_BINS\t\t\t\t= %d\n",			$hdr{N_BINS});
   161 	printf("\tBLANKING_DISTANCE\t\t= %g m\n", $hdr{BLANKING_DISTANCE});
   176 	printf("\tBLANKING_DISTANCE\t\t= %g m\n", $hdr{BLANKING_DISTANCE});
   162 	printf("\tTRANSMIT_LAG_DISTANCE\t\t= %g m\n",   
       
   163 												$hdr{TRANSMIT_LAG_DISTANCE});
       
   164 	printf("\tDISTANCE_TO_BIN1_CENTER\t\t= %g m\n",   
   177 	printf("\tDISTANCE_TO_BIN1_CENTER\t\t= %g m\n",   
   165 												$hdr{DISTANCE_TO_BIN1_CENTER});
   178 												$hdr{DISTANCE_TO_BIN1_CENTER});
   166 	printf("\tBIN_LENGTH\t\t\t= %g m\n",		$hdr{BIN_LENGTH});
   179 	printf("\tBIN_LENGTH\t\t\t= %g m\n",		$hdr{BIN_LENGTH});
   167 	printf("\tTRANSMITTED_PULSE_LENGTH\t= %g m\n",    
   180 	printf("\tTRANSMITTED_PULSE_LENGTH\t= %g m\n",    
   168 												$hdr{TRANSMITTED_PULSE_LENGTH});
   181 												$hdr{TRANSMITTED_PULSE_LENGTH});
   169 	printf("\tRL_FIRST_BIN\t\t\t= %d\n",		$hdr{RL_FIRST_BIN});
   182 	printf("\tRL_FIRST_BIN\t\t\t= %d\n",		$hdr{RL_FIRST_BIN})	if $opt_l;
   170 	printf("\tRL_LAST_BIN\t\t\t= %d\n",		$hdr{RL_LAST_BIN});
   183 	printf("\tRL_LAST_BIN\t\t\t= %d\n",			$hdr{RL_LAST_BIN})  if $opt_l;
   171 	
   184 	
   172 	
   185 	
   173 	print("    Water-Track Setup:\n");
   186 	print("    Water-Track Setup:\n");
   174 	printf("\tPINGS_PER_ENSEMBLE\t\t= %d\n",	$hdr{PINGS_PER_ENSEMBLE});
   187 	printf("\tPINGS_PER_ENSEMBLE\t\t= %d\n",	$hdr{PINGS_PER_ENSEMBLE});
   175 	printf("\tTIME_BETWEEN_PINGS\t\t= %g s\n",$hdr{TIME_BETWEEN_PINGS});
   188 	printf("\tTIME_BETWEEN_PINGS\t\t= %g s\n",$hdr{TIME_BETWEEN_PINGS});