##// END OF EJS Templates
En esta version se corrigieron los bugs de lectura, la lectura se ha implementado para modo offline, el script TestReader.py es un ejemplo que muestra como debe hacerse la lectura de rawdata usando estas librerias.
Daniel Valdez -
r8:cd80c0608691
parent child
Show More
@@ -1,3 +1,5
1 import numpy
2
1 class PROCFLAG:
3 class PROCFLAG:
2 COHERENT_INTEGRATION = numpy.uint32(0x00000001)
4 COHERENT_INTEGRATION = numpy.uint32(0x00000001)
3 DECODE_DATA = numpy.uint32(0x00000002)
5 DECODE_DATA = numpy.uint32(0x00000002)
@@ -16,8 +16,6 from Data import DataReader
16 from Data import DataWriter
16 from Data import DataWriter
17
17
18 class VoltageReader(DataReader):
18 class VoltageReader(DataReader):
19 # Este flag indica que la data leida no es continua
20 __jumpDataFlag = False
21
19
22 __idFile = 0
20 __idFile = 0
23
21
@@ -39,7 +37,7 class VoltageReader(DataReader):
39
37
40 __maxTimeStep = 5
38 __maxTimeStep = 5
41
39
42 __flagResetProcessing = 0
40 flagResetProcessing = 0
43
41
44 __flagIsNewFile = 0
42 __flagIsNewFile = 0
45
43
@@ -55,18 +53,18 class VoltageReader(DataReader):
55
53
56 basicHeaderSize = 24
54 basicHeaderSize = 24
57
55
58 objBasicHeader = BasicHeader()
56 basicHeaderObj = BasicHeader()
59
57
60 objSystemHeader = SystemHeader()
58 systemHeaderObj = SystemHeader()
61
59
62 objRadarControllerHeader = RadarControllerHeader()
60 radarControllerHeaderObj = RadarControllerHeader()
63
61
64 objProcessingHeader = ProcessingHeader()
62 processingHeaderObj = ProcessingHeader()
65
63
66 __buffer = 0
64 __buffer = 0
67
65
68 __buffer_id = 9999
66 __buffer_id = 9999
69 m_Voltage= Voltage()
67 #m_Voltage= Voltage()
70
68
71
69
72 def __init__(self):
70 def __init__(self):
@@ -76,19 +74,19 class VoltageReader(DataReader):
76 if fp == None:
74 if fp == None:
77 fp = self.__fp
75 fp = self.__fp
78
76
79 self.objSystemHeader.read(fp)
77 self.systemHeaderObj.read(fp)
80
78
81 def __rdRadarControllerHeader(self,fp=None):
79 def __rdRadarControllerHeader(self,fp=None):
82 if fp == None:
80 if fp == None:
83 fp = self.__fp
81 fp = self.__fp
84
82
85 self.objRadarControllerHeader.read(fp)
83 self.radarControllerHeaderObj.read(fp)
86
84
87 def __rdProcessingHeader(self,fp=None):
85 def __rdProcessingHeader(self,fp=None):
88 if fp == None:
86 if fp == None:
89 fp = self.__fp
87 fp = self.__fp
90
88
91 self.objProcessingHeader.read(fp)
89 self.processingHeaderObj.read(fp)
92
90
93 def __searchFiles(self,path, startDateTime, endDateTime, set=None, expLabel = "", ext = "*.r"):
91 def __searchFiles(self,path, startDateTime, endDateTime, set=None, expLabel = "", ext = "*.r"):
94
92
@@ -168,14 +166,14 class VoltageReader(DataReader):
168 if endUTSeconds==None:
166 if endUTSeconds==None:
169 endUTSeconds = self.endUTCSeconds
167 endUTSeconds = self.endUTCSeconds
170
168
171 objBasicHeader = BasicHeader()
169 basicHeaderObj = BasicHeader()
172
170
173 if not(objBasicHeader.read(fp)):
171 if not(basicHeaderObj.read(fp)):
174 return 0
172 return 0
175
173
176 fp.close()
174 fp.close()
177
175
178 if not ((startUTSeconds <= objBasicHeader.utc) and (endUTSeconds >= objBasicHeader.utc)):
176 if not ((startUTSeconds <= basicHeaderObj.utc) and (endUTSeconds >= basicHeaderObj.utc)):
179 return 0
177 return 0
180
178
181 return 1
179 return 1
@@ -185,7 +183,7 class VoltageReader(DataReader):
185 if fp == None:
183 if fp == None:
186 fp = self.__fp
184 fp = self.__fp
187
185
188 self.objBasicHeader.read(fp)
186 self.basicHeaderObj.read(fp)
189
187
190 def __readFirstHeader(self):
188 def __readFirstHeader(self):
191
189
@@ -193,9 +191,9 class VoltageReader(DataReader):
193 self.__rdSystemHeader()
191 self.__rdSystemHeader()
194 self.__rdRadarControllerHeader()
192 self.__rdRadarControllerHeader()
195 self.__rdProcessingHeader()
193 self.__rdProcessingHeader()
196 self.firstHeaderSize = self.objBasicHeader.size
194 self.firstHeaderSize = self.basicHeaderObj.size
197
195
198 data_type=int(numpy.log2((self.objProcessingHeader.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
196 data_type=int(numpy.log2((self.processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
199 if data_type == 0:
197 if data_type == 0:
200 tmp=numpy.dtype([('real','<i1'),('imag','<i1')])
198 tmp=numpy.dtype([('real','<i1'),('imag','<i1')])
201 elif data_type == 1:
199 elif data_type == 1:
@@ -212,9 +210,8 class VoltageReader(DataReader):
212 print 'no define data type'
210 print 'no define data type'
213 tmp = 0
211 tmp = 0
214
212
215 self.__flagIsNewFile = 0
216 self.__dataType = tmp
213 self.__dataType = tmp
217 self.__sizeOfFileByHeader = self.objProcessingHeader.dataBlocksPerFile * self.objProcessingHeader.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.objProcessingHeader.dataBlocksPerFile - 1)
214 self.__sizeOfFileByHeader = self.processingHeaderObj.dataBlocksPerFile * self.processingHeaderObj.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.processingHeaderObj.dataBlocksPerFile - 1)
218
215
219 def __setNextFileOnline(self):
216 def __setNextFileOnline(self):
220 return 0
217 return 0
@@ -235,7 +232,7 class VoltageReader(DataReader):
235 fp = open(filename,'rb')
232 fp = open(filename,'rb')
236
233
237 currentSize = fileSize - fp.tell()
234 currentSize = fileSize - fp.tell()
238 neededSize = self.objProcessingHeader.blockSize + self.firstHeaderSize
235 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
239
236
240 if (currentSize < neededSize):
237 if (currentSize < neededSize):
241 continue
238 continue
@@ -261,20 +258,27 class VoltageReader(DataReader):
261
258
262 def __setNewBlock(self):
259 def __setNewBlock(self):
263
260
261 if self.__flagIsNewFile:
262 return 1
263
264 currentSize = self.fileSize - self.__fp.tell()
264 currentSize = self.fileSize - self.__fp.tell()
265 neededSize = self.objProcessingHeader.blockSize + self.basicHeaderSize
265 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
266
266
267 # Bloque Completo
267 # Bloque Completo
268 if (currentSize >= neededSize):
268 if (currentSize >= neededSize):
269 self.__readBasicHeader()
269 self.__readBasicHeader()
270 return 1
270 return 1
271
271
272 self.__setNextFile()
272 if not(self.__setNextFile()):
273 return 0
274
273 self.__readFirstHeader()
275 self.__readFirstHeader()
274
276
275 deltaTime = self.objBasicHeader.utc - self.__lastUTTime # check this
277 deltaTime = self.basicHeaderObj.utc - self.__lastUTTime # check this
278
279 self.flagResetProcessing = 0
276 if deltaTime > self.__maxTimeStep:
280 if deltaTime > self.__maxTimeStep:
277 self.__flagResetProcessing = 1
281 self.flagResetProcessing = 1
278
282
279 return 1
283 return 1
280
284
@@ -285,11 +289,13 class VoltageReader(DataReader):
285 seteado a 0
289 seteado a 0
286 """
290 """
287
291
288 pts2read = self.objProcessingHeader.profilesPerBlock*self.objProcessingHeader.numHeights*self.objSystemHeader.numChannels
292 pts2read = self.processingHeaderObj.profilesPerBlock*self.processingHeaderObj.numHeights*self.systemHeaderObj.numChannels
289
293
290 data = numpy.fromfile(self.__fp,self.__dataType,pts2read)
294 data = numpy.fromfile(self.__fp,self.__dataType,pts2read)
291
295
292 data = data.reshape((self.objProcessingHeader.profilesPerBlock, self.objProcessingHeader.numHeights, self.objSystemHeader.numChannels))
296 data = data.reshape((self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.numHeights, self.systemHeaderObj.numChannels))
297
298 self.__flagIsNewFile = 0
293
299
294 self.__buffer = data
300 self.__buffer = data
295
301
@@ -297,14 +303,17 class VoltageReader(DataReader):
297
303
298 def readNextBlock(self):
304 def readNextBlock(self):
299
305
300 self.__setNewBlock()
306 if not(self.__setNewBlock()):
307 return 0
301
308
302 self.__readBlock()
309 self.__readBlock()
303
310
304 self.__lastUTTime = self.objBasicHeader.utc
311 self.__lastUTTime = self.basicHeaderObj.utc
312
313 return 1
305
314
306 def __hasNotDataInBuffer(self):
315 def __hasNotDataInBuffer(self):
307 if self.__buffer_id >= self.objProcessingHeader.profilesPerBlock:
316 if self.__buffer_id >= self.processingHeaderObj.profilesPerBlock:
308 return 1
317 return 1
309
318
310 return 0
319 return 0
@@ -315,6 +324,7 class VoltageReader(DataReader):
315 lectura es necesario hacer una nueva lectura de los bloques de datos
324 lectura es necesario hacer una nueva lectura de los bloques de datos
316 "__readBlock"
325 "__readBlock"
317 """
326 """
327 self.flagResetProcessing = 0
318
328
319 if self.__hasNotDataInBuffer():
329 if self.__hasNotDataInBuffer():
320 self.readNextBlock()
330 self.readNextBlock()
@@ -324,11 +334,11 class VoltageReader(DataReader):
324 return None
334 return None
325
335
326 data = self.__buffer[self.__buffer_id,:,:]
336 data = self.__buffer[self.__buffer_id,:,:]
327
337 #time = timeblock + n*ipp
328 #print self.__buffer_id
338 #print self.__buffer_id
329
339
330 self.__buffer_id += 1
340 self.__buffer_id += 1
331
341
332 #call setData - to Data Object
342 #call setData - to Data Object
333
343
334 return data
344 return data
General Comments 0
You need to be logged in to leave comments. Login now