FUNCTION vu_vox_read, files, volume=volume, $ version = version, $ copyright = copyright, $ vol_size = vol_size, $ vox_size = vox_size, $ vol_name = vol_name, $ ut = ut, $ minf = minf, $ maxf = maxf, $ topb = topb, $ silent=silent ;+ ; NAME: ; vu_vox_read ; PURPOSE: ; Read binary file used for Volume Pro board ; CATEGORY: ; I/O ; CALLING SEQUENCE: ; count = vu_vox_read(files, volume=volume) ; INPUTS: ; files array; type: string ; list of vox file names ; If not specified then the IDL pickfile ; dialog is called ; OPTIONAL INPUT PARAMETERS: ; OUTPUTS: ; count scalar; type: integer ; # volumes ; volume array[count]; type: pointer ; volume data ; OPTIONAL OUTPUTS: ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; InitVar, IsType, TimeSet, vox_read, flt_string ; PROCEDURE: ; MODIFICATION HISTORY: ; JUL-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ;- InitVar, silent , 0 IF IsType(files, /undefined) THEN BEGIN files = dialog_pickfile(_extra=_extra) ENDIF count = files[0] NE '' IF count EQ 0 THEN RETURN, count count = n_elements(files) version = strarr( count) copyright = strarr( count) vol_size = intarr(3,count) vox_size = intarr( count) vol_name = strarr( count) ut = replicate(!TheTime,count) range = fltarr(2,count) minf = fltarr(count) maxf = fltarr(count) topb = fltarr(count) volume = ptrarr(count, /allocate_heap) FOR i=0L,count-1 DO BEGIN *volume[i] = vox_read(files[i], version=version_, copyright=copyright_, $ gen_comments=gen_comments, $ vol_size=vol_size_, vox_size=vox_size_, $ vol_name=vol_name_, vol_comments=vol_comments, $ silent=silent, errormessage=errormessage) IF errormessage EQ '' THEN BEGIN IF IsType(version_ , /defined) THEN version [ i] = version_ IF IsType(copyright_, /defined) THEN copyright[ i] = copyright_ IF IsType(vol_size_ , /defined) THEN vol_size [*,i] = vol_size_ IF IsType(vox_size_ , /defined) THEN vox_size [ i] = vox_size_ IF IsType(vol_name_ , /defined) THEN vol_name [ i] = vol_name_ IF IsType(vol_comments,/defined) THEN BEGIN str = 'UT ' n = (where( strpos(vol_comments,str) EQ 0 ))[0] IF n NE -1 THEN ut[i] = TimeSet( strmid(vol_comments[n],strlen(str)) ) str = 'Radial range (AU) ' n = (where( strpos(vol_comments,str) EQ 0 ))[0] IF n NE -1 THEN range[*,i] = flt_string( strmid(vol_comments[n],strlen(str)) ) str = 'min ' n = (where( strpos(vol_comments,str) EQ 0 ))[0] IF n NE -1 THEN minf[i] = flt_string( strmid(vol_comments[n],strlen(str)) ) str = 'max ' n = (where( strpos(vol_comments,str) EQ 0 ))[0] IF n NE -1 THEN maxf[i] = flt_string( strmid(vol_comments[n],strlen(str)) ) str = 'top ' n = (where( strpos(vol_comments,str) EQ 0 ))[0] IF n NE -1 THEN topb[i] = flt_string( strmid(vol_comments[n],strlen(str)) ) ENDIF ENDIF ENDFOR RETURN, count & END