Hello Rock,
I am attaching the pulseinfo output for optech_example2.pls to the end of this message. I should mention here that I have so far (unfortunately) received no assistance from optech in creating PulseWaves example files for the full waveform output form their hardware. The examples that are on the site were created by me based by "hacking" their proprietary format using on insights i got from Francesco Pirotti and Andreas Roncat about the CSD / NDF / IDX / DGT format. However, I have received verbal assurance that Optech plans to support PulseWaves in the future ... (-:
as you can see in the pulseinfo output, the total offset to the pulses is 2176 and of that 352 are the header. Hence the remaining 1824 bytes are (likely) to be the five VLRs.
header size: 352
offset to pulse data: 2176
the first VLR (scanner) has a payload of 248 bytes. the next VLR (descriptor 1) has a payload of 196 bytes. and the next three VLRs (descriptor 2,3,4) have payloads of 300 bytes each. Subtracting all that from 1824 leaves 480 bytes. And those are exactly
the 5 VLR headers of 96 bytes each that we have not counted yet.
Cheers,
Martin @LaserPulseWaves
--
C:\pulsetools\bin>pulseinfo optech_example2.pls
reporting all PULSE header entries:
file signature: 'PulseWavesPulse'
global parameters: 0
file source ID: 0
project ID GUID data 1-4: 00000000-0000-0000-0000-000000000000
system identifier: 'PulseWaves v0.3 r0 (130201)'
generating software: 'created by PULSEreaderCSD'
file creation day/year: 333/2012
version major.minor: 0.3
header size: 352
offset to pulse data: 2176
number of pulses: 60000
pulse format: 0
pulse attributes: 0
pulse size: 48
pulse compression: 0
number vlrs: 5
number avlrs: 0
scale factor and offset t: 1e-006 1000000000
min max T: 0 0
scale factor x y z: 0.01 0.01 0.01
offset x y z: 4300000 800000 4600000
min x y z: 4291045.95 812323.42 4635352.26
max x y z: 4291946.58 812916.30 4635753.13
variable length header record 1 of 5:
reserved 0
user ID 'PulseWaves_Spec'
record ID 100001
length after header 248
description 'PULSEtools 0.3 (build 130201) by Martin Isenburg'
PULSEscanner 1
instrument: ''
serial: ''
wave_length: 1064 [nanometer]
outgoing_pulse_width: 10 [nanoseconds]
scan_pattern: 0 ('undefined')
number_of_mirror_facets: 0
scan_frequency: 0 [hertz]
scan_angle_min: 0 [degree]
scan_angle_max: 0 [degree]
pulse_frequency: 0 [kilohertz]
beam_diameter_at_exit_aperture: 0 [millimeters]
beam_divergence: 0 [milliradians]
minimal_range: 0 [meters]
maximal_range: 0 [meters]
description: ''
variable length header record 2 of 5:
reserved 0
user ID 'PulseWaves_Spec'
record ID 200001
length after header 196
description 'PULSEtools 0.3 (build 130201) by Martin Isenburg'
PULSEdescriptor 1
optical_center_to_anchor_point: 0x0 ('coincide')
number_of_extra_waves_bytes: 0
number_of_samplings: 1
sample_units: 1 [nanoseconds]
scanner_index: 1
compression: 0
description: 'Optech (1 outgoing only)'
sampling[0]
type: 1 ('outgoing')
channel: 0
bits_for_duration_from_anchor: 0
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 0
number_of_segments: 1
number_of_samples: 40
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'outgoing, 40 samples, 8 bits'
variable length header record 3 of 5:
reserved 0
user ID 'PulseWaves_Spec'
record ID 200002
length after header 300
description 'PULSEtools 0.3 (build 130201) by Martin Isenburg'
PULSEdescriptor 2
optical_center_to_anchor_point: 0x0 ('coincide')
number_of_extra_waves_bytes: 0
number_of_samplings: 2
sample_units: 1 [nanoseconds]
scanner_index: 1
compression: 0
description: 'Optech (1 outgoing 1 returning)'
sampling[0]
type: 1 ('outgoing')
channel: 0
bits_for_duration_from_anchor: 0
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 0
number_of_segments: 1
number_of_samples: 40
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'outgoing, 40 samples, 8 bits'
sampling[1]
type: 2 ('returning')
channel: 0
bits_for_duration_from_anchor: 16
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 8
number_of_segments: 1
number_of_samples: 0
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'returning, 1 seg, vary, 8 bits'
variable length header record 4 of 5:
reserved 0
user ID 'PulseWaves_Spec'
record ID 200003
length after header 300
description 'PULSEtools 0.3 (build 130201) by Martin Isenburg'
PULSEdescriptor 3
optical_center_to_anchor_point: 0x0 ('coincide')
number_of_extra_waves_bytes: 0
number_of_samplings: 2
sample_units: 1 [nanoseconds]
scanner_index: 1
compression: 0
description: 'Optech (1 outgoing 2 returning)'
sampling[0]
type: 1 ('outgoing')
channel: 0
bits_for_duration_from_anchor: 0
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 0
number_of_segments: 1
number_of_samples: 40
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'outgoing, 40 samples, 8 bits'
sampling[1]
type: 2 ('returning')
channel: 0
bits_for_duration_from_anchor: 16
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 8
number_of_segments: 2
number_of_samples: 0
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'returning, 2 seg, vary, 8 bits'
variable length header record 5 of 5:
reserved 0
user ID 'PulseWaves_Spec'
record ID 200004
length after header 300
description 'PULSEtools 0.3 (build 130201) by Martin Isenburg'
PULSEdescriptor 4
optical_center_to_anchor_point: 0x0 ('coincide')
number_of_extra_waves_bytes: 0
number_of_samplings: 2
sample_units: 1 [nanoseconds]
scanner_index: 1
compression: 0
description: 'Optech (1 outgoing 3 returning)'
sampling[0]
type: 1 ('outgoing')
channel: 0
bits_for_duration_from_anchor: 0
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 0
number_of_segments: 1
number_of_samples: 40
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'outgoing, 40 samples, 8 bits'
sampling[1]
type: 2 ('returning')
channel: 0
bits_for_duration_from_anchor: 16
scale_for_duration_from_anchor: 1
offset_for_duration_from_anchor: 0
bits_for_number_of_segments: 0
bits_for_number_of_samples: 8
number_of_segments: 3
number_of_samples: 0
bits_per_sample: 8
lookup_table_index: 0 ('undefined')
sample_units: 1.0 [nanoseconds]
compression: 0
description: 'returning, 3 seg, vary, 8 bits'
reporting minimum and maximum for all PULSE record entries ...
T 0 0
offset 60 7079595
anchor_X -772781 -770531
anchor_Y 1267037 1272634
anchor_Z 3630806 3633918
target_X -786086 -775497
target_Y 1262328 1274592
target_Z 3617565 3627307
first_returning_sample 6632 9288
last_returning_sample 6704 9368
descriptor_index 1 3
reserved 0 0
edge_of_scan_line 0 0
scan_direction 0 0
mirror_facet 0 0
intensity 0 0
classification 0 0
min x y z 4291045.96 812323.43 4635352.27
max x y z 4291946.57 812916.29 4635753.12