pro read_noaa_pose_sem1,filename,noaa_data_outs ;************************************************************ ;filename: A string containing the packed filename (e.g.'F:\NOAA\data\poes_n10_19910301.bin') ;noaa_data_outs: The structure arrays containing the data of the packed filename ;The code was converted from unpack2.c by Ruilin Lin ;Center for Space Science and Applied Research, Chinese Academy of Sciences ;Http://www.sepc.ac.cn ;====================================================== ;************************************************************* noaa_data_bin={ $ IHD_Msec: 0L, $ JHEAD: make_array(22,/long), $ JTEDFX: make_array(4,/long), $ JHOUS: make_array(15,/INTEGER), $ IHD: make_array(8,/INTEGER), $ ISTAT_P: make_array(2,/INTEGER), $ Index_MEPI: make_array(2,/Byte), $ Index_MEP: make_array(19,4,/Byte), $ Index_IHEP: make_array(11,2,/Byte), $ Index_TED: make_array(18,4,/Byte), $ Prog_Ver: Byte(0), $ Prog_Ver0: Byte(0) $ } noaa_data_out={ $ IHD: make_array(9,/long), $ HEAD: make_array(23,/float), $ ISTAT: make_array(8,/long), $ HOUS: make_array(15,/float), $ MEPI: make_array(2,/long), $ MEP: make_array(19,4,/float), $ IHEP: make_array(11,2,/long), $ TED: make_array(18,4,/float), $ TEDFX: make_array(4,/float), $ ISTAT_P: make_array(2,/long) $ } ;Preparing the arrays for reading the binary data ;******************************************************** size_one_data=332L result=READ_BINARY(filename) number_of_data=n_elements(result)/size_one_data noaa_data_bins=replicate(noaa_data_bin,number_of_data) noaa_data_outs=replicate(noaa_data_out,number_of_data) ;******************************************************** ;Reading the Binary Data ;******************************************************** openr,lun,filename,/get_lun readu,lun,noaa_data_bins free_lun,lun ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack IHD ;Data Type: long ;IHD[0] spacecraft ID ;IHD[1] Year ;IHD[2] Day of the year ;IHD[3] Millisecond of the day ;IHD[4] Receiving station ;IHD[5] Altitude (Unit one hundred meter) ;IHD[6] Inclination (Unit 0.1 degree) ;IHD[7] Orbit number ;IHD[8] Record type ;******************************************************** temp=noaa_data_bins[*].IHD[0:2] BYTEORDER,temp,/NTOHS noaa_data_outs[*].IHD[0:2]=temp[*,*] temp=noaa_data_bins[*].IHD_Msec BYTEORDER,temp,/NTOHL noaa_data_outs[*].IHD[3]=temp[*] temp=noaa_data_bins[*].IHD[3:7] BYTEORDER,temp,/NTOHS noaa_data_outs[*].IHD[4:8]=temp[*,*] ;print,noaa_data_outs[0].IHD[*] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack HEAD ;Data Type: float ;HEAD[0] Geographic latitude at the satellite ;HEAD[1] Geographic east longitude at the satellite ;HEAD[2] BR at the satellite ;HEAD[3] BT at the satellite ;HEAD[4] BP at the satellite ;HEAD[5] BB at the satellite ;HEAD[6] Geographic latitude at the FOFL (Foot of the Field Line' ) ;HEAD[7] Geographic east longitude at the FOFL ;HEAD[8] BR120 at the FOFL ;HEAD[9] BT120 at the FOFL ;HEAD[10] BP120 at the FOFL ;HEAD[11] BB120 at the FOFL ;HEAD[12] Geomagnetic latitude at the FOFL ;HEAD[13] Geomagnetic east longitude at the FOFL ;HEAD[14] L-value ;HEAD[15] TED0 Pitch Angle ;HEAD[16] TED30 Pitch Angle ;HEAD[17] MEPED81 Pitch Angle ;HEAD[18] MEPED83 Pitch Angle ;HEAD[19] MEPED0 Pitch Angle ;HEAD[20] Local time at the satellite ;HEAD[21] Magnetic Local time at the satellite ;HEAD[22] Program version ;******************************************************** temp=noaa_data_bins[*].JHEAD[0:21] BYTEORDER,temp,/NTOHL noaa_data_outs[*].HEAD[0:21]=float(temp[*,*]) noaa_data_outs[*].HEAD[0:1]=0.01*noaa_data_outs[*].HEAD[0:1] noaa_data_outs[*].HEAD[6:7]=0.01*noaa_data_outs[*].HEAD[6:7] noaa_data_outs[*].HEAD[12:21]=0.01*noaa_data_outs[*].HEAD[12:21] noaa_data_outs[*].HEAD[22]=float(noaa_data_bins[*].Prog_ver) ; print,noaa_data_outs[0].HEAD[*] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack ISTA_P ;Data Type: long ;ISTAT[0] MEPED on/off ;ISTAT[1] HEPAD on/off ;ISTAT[2] TED on/off ;ISTAT[3] MEPED IFC ;ISTAT[4] TED/HEPAD IFC ;ISTAT[5] TED MOD ;ISTAT[6] TELEMETRY FORMAT ;ISTAT[7] TED PHD flags ;******************************************************** temp=noaa_data_bins[*].ISTAT_P[0:1] BYTEORDER,temp,/NTOHS noaa_data_outs[*].ISTAT_P[0:1]=long(temp[*,*]) noaa_data_outs[*].ISTAT[0]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X80'X),-7) noaa_data_outs[*].ISTAT[1]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X40'X),-6) noaa_data_outs[*].ISTAT[2]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X20'X),-5) noaa_data_outs[*].ISTAT[3]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X10'X),-4) noaa_data_outs[*].ISTAT[4]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X08'X),-3) noaa_data_outs[*].ISTAT[5]=ishft((noaa_data_outs[*].ISTAT_P[0] and '0X6'X),-1) noaa_data_outs[*].ISTAT[6]=noaa_data_outs[*].ISTAT_P[0] and '0X1'X noaa_data_outs[*].ISTAT[7]=noaa_data_outs[*].ISTAT_P[1] and '0XFF'X ;print,noaa_data_outs[0].ISTAT[*] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack HOUS ;Data Type: float ;HOUS(1)-HOUS(15) Instrument housekeeping words ;HOUS[0] MPTT MEPED proton telescope temperature ;HOUS[1] METT MEPED electron telescope temperature ;HOUS[2] MELT MEPED electronics temperature ;HOUS[3] OMNI MEPED OMNI temperature ;HOUS[4] AMSS MEPED detector-bias voltage ;HOUS[5] HELT HEPAD electronics temperature ;HOUS[6] PMTT HEPAD photo-multiplier tube temperature ;HOUS[7] PMHV HEPAD high-voltage power-bias monitor ;HOUS[8] HSSD HEPAD solid-state detector-bias monitor ;HOUS[9] LVL HEPAD level calculated from PMHV and HELT ;HOUS[10] TEPS TED electron channeltron power-supply monitor ;HOUS[11] TPPS TED protron channeltron power-supply monitor ;HOUS[12] LVR TED low-voltage ramp monitor ;HOUS[13] CEA TED cylindrical electrostatic analyzer power-supply monitor ;HOUS[14] TEDT TED temperature monitor ;******************************************************** temp=noaa_data_bins[*].JHOUS[0:14] BYTEORDER,temp,/NTOHS noaa_data_outs[*].HOUS[0:14]=float(temp[*,*]) noaa_data_outs[*].HOUS[0:3]=noaa_data_outs[*].HOUS[0:3]/10.0 noaa_data_outs[*].HOUS[5:6]=noaa_data_outs[*].HOUS[5:6]/10.0 noaa_data_outs[*].HOUS[7]=noaa_data_outs[*].HOUS[7]/100.0 noaa_data_outs[*].HOUS[12]=noaa_data_outs[*].HOUS[12]/100.0 noaa_data_outs[*].HOUS[13:14]=noaa_data_outs[*].HOUS[13:14]/10.0 ;print,noaa_data_outs[0].HOUS[*] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;The c2 and ic Conversion Tables c2 =[1057., 1121., 1185., 1249., 1313., 1377., 1441., $ 1505., 1569., 1633., 1697., 1761., 1825., 1889., 1953., 2017., $ 2113., 2241., 2369., 2497., 2625., 2753., 2881., 3009., $ 3137., 3265., 3393., 3521., 3649., 3777., 3905., 4033., $ 4225., 4481., 4737., 4993., 5249., 5505., 5761., 6017., $ 6273., 6529., 6785., 7041., 7297., 7553., 7809., 8065., $ 8449., 8961., 9473., 9985., 10497., 11009., 11521., 12033., $ 12545., 13057., 13569., 14081., 14593., 15105., 15617., 16129., $ 16897., 17921., 18945., 19969., 20993., 22017., 23041., 24065., $ 25089., 26113., 27137., 28161., 29185., 30209., 31233., 32257., $ 33793., 35841., 37889., 39937., 41985., 44033., 46081., 48129., $ 50177., 52225., 54273., 56321., 58369., 60417., 62465., 64513., $ 67584., 71680., 75776., 79872., 83968., 88064., 92160., 96256., $ 4.25 , 4.75, 5.25, 5.75, 6.25, 6.75, 7.25, 7.75, $ 135168.,143360.,151552.,159744.,167936.,176128.,184320.,192512., $ 2.125 , 2.375, 2.625, 2.875, 3.125, 3.375, 3.625, 3.875, $ 0.0625, 0.1875, 0.3125, 0.4375, 0.5625, 0.6875, 0.8125, 0.9375, $ 1.0625, 1.1875, 1.3125, 1.4375, 1.5625, 1.6875, 1.8125, 1.9375, $ -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , $ 8.5 , 9.5 , 10.5 , 11.5 , 12.5 , 13.5 , 14.5 , 15.5 , $ 17. , 18. , 19. , 20. , 21. , 22. , 23. , 24. , $ 25. , 26. , 27. , 28. , 29. , 30. , 31. , 32. , $ 34. , 36. , 38. , 40. , 42. , 44. , 46. , 48. , $ 50. , 52. , 54. , 56. , 58. , 60. , 62. , $ 64. , 67. , 71. , 75. , 79. , 83. , 87. , $ 91. , 95. , 99. , 103. , 107. , 111. , 115. , 119. , $ 123. , 127. , 133. , 141. , 149. , 157. , 165. , $ 173. , 181. , 189. , 197. , 205. , 213. , $ 221. , 229. , 237. , 245. , 253. , 265. , 281. , 297. , $ 313. , 329. , 345. , 361. , 377. , $ 393. , 409. , 425. , 441. , 457. , 473. , 489. , 505. , $ 529. , 561. , 593. , 625. , $ 657. , 689. , 721. , 753. , 785. , 817. , 849. , 881. , $ 913. , 945. , 977. , 1009.] ic =[1057., 1121., 1185., 1249., 1313., 1377., 1441., $ 1505., 1569., 1633., 1697., 1761., 1825., 1889., 1953.,2017., $ 2113., 2241., 2369., 2497., 2625., 2753., 2881., 3009., $ 3137., 3265., 3393., 3521., 3649., 3777., 3905., 4033., $ 4225., 4481., 4737., 4993., 5249., 5505., 5761., 6017., $ 6273., 6529., 6785., 7041., 7297., 7553., 7809., 8065., $ 8449., 8961., 9473., 9985., 10497., 11009., 11521.,12033., $ 12545., 13057., 13569., 14081., 14593., 15105., 15617.,16129., $ 16897., 17921., 18945., 19969., 20993., 22017., 23041.,24065., $ 25089., 26113., 27137., 28161., 29185., 30209., 31233.,32257., $ 33793., 35841., 37889., 39937., 41985., 44033., 46081.,48129., $ 50177, 52225, 54273, 56321, 58369, 60417, 62465, 64513, $ 67585, 71681, 75777, 79873, 83969, 88065, 92161, 96257, $ 100353,104449,108545,112641,116737,120833,124929,129025, $ 135169,143361,151553,159745,167937,176129,184321,192513, $ 200705,208897,217089,225281,233473,241665,249857,258049, $ 270337,286721,303105,319489,333873,352257,368641,385025, $ 401409,417793,434177,450561,466945,483329,499713, $ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, $ 21,22,23,24,25,26,27,28,29,30,31,32,34,36,38,40,42,44, $ 46,48,50,52,54,56,58,60,62,64,67,71,75,79,83,87,91,95, $ 99,103,107,111,115,119,123,127,133,141,149,157,165,173, $ 181,189,197,205,213,221,229,237,245,253,265,281,297, $ 313,329,345,361,377,393,409,425,441,457,473,489,505, $ 529,561,593,625,657,689,721,753,785,817,849,881,913, $ 945,977,1009] ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack MEPI ;Data Type: long ;MEPI[0] 0I ;MEPI[1] 90I ;******************************************************** noaa_data_outs[*].MEPI[0:1]=long(ic[ noaa_data_bins[*].Index_MEPI[0:1] ]) ;print,noaa_data_outs[0].MEPI[*] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack MEP ;Data Type: float ;MEP[0,n]--MEP[4,n] 0P1 to 0P5 ;MEP[5,n]--MEP[7,n] 0E1 to 0E3 ;MEP[8,n]--MEP[12,n] 90P1 to 90P5 ;MEP[13,n]--MEP[15,n] 90E1 to 90E5 ;MEP[16,n]--MEP[18,n] P6 to P8 ;where n=0 to 3,for each 2s sample in the 8s record. ;******************************************************** noaa_data_outs[*].MEP[*,*]=float(ic[ noaa_data_bins[*].Index_MEP[*,*] ]) ;print,noaa_data_outs[0].MEP[*,0] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack IHEP ;Data Type: long ;IHEP[0,j]--IHEP[3,j] P1 to P4 ;IHEP[4,j] alpha 1 ;IHEP[5,j] alpha 2 ;IHEP[6,j] S5 ;IHEP[7,j] S4 ;IHEP[8,j] S1 ;IHEP[9,j] S2 ;IHEP[10,j] S3 ;where j=0 to 1 ;******************************************************** noaa_data_outs[*].IHEP[*,*]=long(ic[ noaa_data_bins[*].Index_IHEP[*,*] ]) ;print,noaa_data_outs[0].IHEP[*,1] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack TED ;Data Type: float ;TED[0,j] data channel 1 ;TED[1,j] data channel 3 ;TED[2,j] data channel 5 ;TED[3,j] data channel 7 ;TED[4,j] maximum interval ;TED[5,j] count in maximum interval ;where j=0,3 ; 0 = values for 0 degree electron detector ; 1 = values for 30 degree electron detector ; 2 = values for 0 degree proton detector ; 3 = values for 30 degree proton detector ;TED[6,n]--TED[8,n] 0EF-D,0DE-M,0E-M ;TED[9,n]--TED[11,n] 30EF-D,30DE-M,30E-M ;TED[12,n]--TED[14,n] 0PF-D,0DP-M,0P-M ;TED[15,n]--TED[17,n] 30PF-D,30DP-M,30P-M ;where n=0 to 3,for each 2s sample in the 8s record. ;******************************************************** noaa_data_outs[*].TED[0:4,*]=ic[ noaa_data_bins[*].Index_TED[0:4,*] ] noaa_data_outs[*].TED[5,*]=float(noaa_data_bins[*].Index_TED[5,*] ) for i=0,3 do begin noaa_data_outs[*].TED[6+i*3,*]=c2[ noaa_data_bins[*].Index_TED[6+i*3,*] ] noaa_data_outs[*].TED[7+i*3,*]=ic[ noaa_data_bins[*].Index_TED[7+i*3,*] ] noaa_data_outs[*].TED[8+i*3,*]=float(noaa_data_bins[*].Index_TED[8+i*3,*]) endfor ;print,noaa_data_outs[0].TED[*,3] ;******************************************************** ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;Unpack TEDFX ;Data Type: float ;TEDFX[n] Total Energy Flux ;where n=1 to 4,for each 2s sample in the 8s record. ;******************************************************** temp=noaa_data_bins[*].JTEDFX[*] BYTEORDER,temp,/NTOHL noaa_data_outs[*].TEDFX[*]=float(temp[*,*])/1000.0 ;print,noaa_data_outs[0].TEDFX[*,0] ;******************************************************** end