''' $Author: murco $ $Id: JROHeaderIO.py 151 2012-10-31 19:00:51Z murco $ ''' import sys import numpy import copy import datetime class Header: def __init__(self): raise def copy(self): return copy.deepcopy(self) def read(): pass def write(): pass def printInfo(self): for key in self.__dict__.keys(): print "%s = %s" %(key, self.__dict__[key]) class BasicHeader(Header): size = None version = None dataBlock = None utc = None miliSecond = None timeZone = None dstFlag = None errorCount = None struct = None datatime = None __LOCALTIME = None def __init__(self, localtime=0): self.size = 0 self.version = 0 self.dataBlock = 0 self.utc = 0 self.miliSecond = 0 self.timeZone = 0 self.dstFlag = 0 self.errorCount = 0 self.struct = numpy.dtype([ ('nSize',' 0: fp.seek(jumpFp) except Exception, e: print "RadarControllerHeader: " + e return 0 return 1 def write(self, fp): headerTuple = (self.size, self.expType, self.nTx, self.ipp, self.txA, self.txB, self.nWindows, self.numTaus, self.codeType, self.line6Function, self.line5Function, self.fClock, self.prePulseBefore, self.prePulserAfter, self.rangeIpp, self.rangeTxA, self.rangeTxB) header = numpy.array(headerTuple,self.struct) header.tofile(fp) dynamic = self.dynamic dynamic.tofile(fp) return 1 class ProcessingHeader(Header): size = None dtype = None blockSize = None profilesPerBlock = None dataBlocksPerFile = None nWindows = None processFlags = None nCohInt = None nIncohInt = None totalSpectra = None struct = None flag_dc = None flag_cspc = None def __init__(self): self.size = 0 self.dtype = 0 self.blockSize = 0 self.profilesPerBlock = 0 self.dataBlocksPerFile = 0 self.nWindows = 0 self.processFlags = 0 self.nCohInt = 0 self.nIncohInt = 0 self.totalSpectra = 0 self.struct = numpy.dtype([ ('nSize',' 0: self.flag_cspc = True except Exception, e: print "ProcessingHeader: " + e return 0 return 1 def write(self, fp): headerTuple = (self.size, self.dtype, self.blockSize, self.profilesPerBlock, self.dataBlocksPerFile, self.nWindows, self.processFlags, self.nCohInt, self.nIncohInt, self.totalSpectra) header = numpy.array(headerTuple,self.struct) header.tofile(fp) if self.nWindows != 0: sampleWindowTuple = (self.firstHeight,self.deltaHeight,self.samplesWin) samplingWindow = numpy.array(sampleWindowTuple,self.structSamplingWindow) samplingWindow.tofile(fp) if self.totalSpectra != 0: spectraComb = numpy.array([],numpy.dtype('u1')) spectraComb = self.spectraComb spectraComb.tofile(fp) if self.processFlags & PROCFLAG.DEFINE_PROCESS_CODE == PROCFLAG.DEFINE_PROCESS_CODE: nCode = self.nCode #Probar con un dato que almacene codigo, hasta el momento no se hizo la prueba nCode.tofile(fp) nBaud = self.nBaud nBaud.tofile(fp) code = self.code.reshape(nCode*nBaud) code.tofile(fp) return 1 class RCfunction: NONE=0 FLIP=1 CODE=2 SAMPLING=3 LIN6DIV256=4 SYNCHRO=5 class nCodeType: NONE=0 USERDEFINE=1 BARKER2=2 BARKER3=3 BARKER4=4 BARKER5=5 BARKER7=6 BARKER11=7 BARKER13=8 AC128=9 COMPLEMENTARYCODE2=10 COMPLEMENTARYCODE4=11 COMPLEMENTARYCODE8=12 COMPLEMENTARYCODE16=13 COMPLEMENTARYCODE32=14 COMPLEMENTARYCODE64=15 COMPLEMENTARYCODE128=16 CODE_BINARY28=17 class PROCFLAG: COHERENT_INTEGRATION = numpy.uint32(0x00000001) DECODE_DATA = numpy.uint32(0x00000002) SPECTRA_CALC = numpy.uint32(0x00000004) INCOHERENT_INTEGRATION = numpy.uint32(0x00000008) POST_COHERENT_INTEGRATION = numpy.uint32(0x00000010) SHIFT_FFT_DATA = numpy.uint32(0x00000020) DATATYPE_CHAR = numpy.uint32(0x00000040) DATATYPE_SHORT = numpy.uint32(0x00000080) DATATYPE_LONG = numpy.uint32(0x00000100) DATATYPE_INT64 = numpy.uint32(0x00000200) DATATYPE_FLOAT = numpy.uint32(0x00000400) DATATYPE_DOUBLE = numpy.uint32(0x00000800) DATAARRANGE_CONTIGUOUS_CH = numpy.uint32(0x00001000) DATAARRANGE_CONTIGUOUS_H = numpy.uint32(0x00002000) DATAARRANGE_CONTIGUOUS_P = numpy.uint32(0x00004000) SAVE_CHANNELS_DC = numpy.uint32(0x00008000) DEFLIP_DATA = numpy.uint32(0x00010000) DEFINE_PROCESS_CODE = numpy.uint32(0x00020000) ACQ_SYS_NATALIA = numpy.uint32(0x00040000) ACQ_SYS_ECHOTEK = numpy.uint32(0x00080000) ACQ_SYS_ADRXD = numpy.uint32(0x000C0000) ACQ_SYS_JULIA = numpy.uint32(0x00100000) ACQ_SYS_XXXXXX = numpy.uint32(0x00140000) EXP_NAME_ESP = numpy.uint32(0x00200000) CHANNEL_NAMES_ESP = numpy.uint32(0x00400000) OPERATION_MASK = numpy.uint32(0x0000003F) DATATYPE_MASK = numpy.uint32(0x00000FC0) DATAARRANGE_MASK = numpy.uint32(0x00007000) ACQ_SYS_MASK = numpy.uint32(0x001C0000)