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"); |
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}); |