##// END OF EJS Templates
en el metodo readblocks se encuentra un error cuando se intenta hacer el reshape del arreglo junk, este error se produce porque no hay bytes suficientes para un bloque de datos. Para esto se propuso el nuevo metodo waitDataBlock que recalcula el numero de byte necesarios para un bloque y espera un tiempo (sleep) en caso no esten disponibles, se hacen tres intentos, si no se tiene exito el programa retorna 0.
Daniel Valdez -
r434:586e60daf0fb
parent child
Show More
@@ -722,6 +722,29 class JRODataReader(JRODataIO, ProcessingUnit):
722 722
723 723 return 0
724 724
725 def waitDataBlock(self,pointer_location):
726
727 currentPointer = pointer_location
728
729 neededSize = self.processingHeaderObj.blockSize #+ self.basicHeaderSize
730
731 for nTries in range( self.nTries ):
732 self.fp.close()
733 self.fp = open( self.filename, 'rb' )
734 self.fp.seek( currentPointer )
735
736 self.fileSize = os.path.getsize( self.filename )
737 currentSize = self.fileSize - currentPointer
738
739 if ( currentSize >= neededSize ):
740 return 1
741
742 print "\tWaiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
743 time.sleep( self.delay )
744
745 return 0
746
747
725 748 def __jumpToLastBlock(self):
726 749
727 750 if not(self.__isFirstTimeOnline):
@@ -1499,14 +1522,18 class VoltageReader(JRODataReader):
1499 1522 Exceptions:
1500 1523 Si un bloque leido no es un bloque valido
1501 1524 """
1502
1525 current_pointer_location = self.fp.tell()
1503 1526 junk = numpy.fromfile( self.fp, self.dtype, self.blocksize )
1504 1527
1505 1528 try:
1506 1529 junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) )
1507 1530 except:
1508 print "The read block (%3d) has not enough data" %self.nReadBlocks
1509 return 0
1531 #print "The read block (%3d) has not enough data" %self.nReadBlocks
1532
1533 if self.waitDataBlock(pointer_location=current_pointer_location):
1534 junk = numpy.fromfile( self.fp, self.dtype, self.blocksize )
1535 junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) )
1536 # return 0
1510 1537
1511 1538 junk = numpy.transpose(junk, (2,0,1))
1512 1539 self.datablock = junk['real'] + junk['imag']*1j
General Comments 0
You need to be logged in to leave comments. Login now