diff --git a/schain.xml b/schain.xml index b67ac71..a18a91f 100644 --- a/schain.xml +++ b/schain.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/schainpy/model/io/jroIO_base.py b/schainpy/model/io/jroIO_base.py index 30a6f83..77d08a0 100644 --- a/schainpy/model/io/jroIO_base.py +++ b/schainpy/model/io/jroIO_base.py @@ -11,7 +11,6 @@ import numpy import fnmatch import inspect import time, datetime -#import h5py import traceback try: @@ -1274,99 +1273,112 @@ class JRODataReader(JRODataIO): skip=None, cursor=None, warnings=True, - verbose=True): - - if path == None: - raise ValueError, "[Reading] The path is not valid" - - if ext == None: - ext = self.ext - - if online: - print "[Reading] Searching files in online mode..." - - for nTries in range( self.nTries ): - fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set) - - if fullpath: - break - - print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1) - sleep( self.delay ) - - if not(fullpath): - print "[Reading] There 'isn't any valid file in %s" % path - return - - self.year = year - self.doy = doy - self.set = set - 1 - self.path = path - self.foldercounter = foldercounter - last_set = None + verbose=True, + server=None): + + if server is not None: + server = kwargs.get('server', 'zmq.pipe') + if 'tcp://' in server: + address = server + else: + address = 'ipc:///tmp/%s' % server + self.address = address + self.context = zmq.Context() + self.receiver = self.context.socket(zmq.PULL) + self.receiver.bind(self.address) + time.sleep(0.5) + print '[Starting] ReceiverData from {}'.format(self.address) + else: + if path == None: + raise ValueError, "[Reading] The path is not valid" + + if ext == None: + ext = self.ext + + if online: + print "[Reading] Searching files in online mode..." + + for nTries in range( self.nTries ): + fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set) + + if fullpath: + break + + print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1) + sleep( self.delay ) + + if not(fullpath): + print "[Reading] There 'isn't any valid file in %s" % path + return + + self.year = year + self.doy = doy + self.set = set - 1 + self.path = path + self.foldercounter = foldercounter + last_set = None + else: + print "[Reading] Searching files in offline mode ..." + pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate, + startTime=startTime, endTime=endTime, + set=set, expLabel=expLabel, ext=ext, + walk=walk, cursor=cursor, + skip=skip, queue=queue) - else: - print "[Reading] Searching files in offline mode ..." - pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate, - startTime=startTime, endTime=endTime, - set=set, expLabel=expLabel, ext=ext, - walk=walk, cursor=cursor, - skip=skip, queue=queue) + if not(pathList): + # print "[Reading] No *%s files in %s (%s - %s)"%(ext, path, + # datetime.datetime.combine(startDate,startTime).ctime(), + # datetime.datetime.combine(endDate,endTime).ctime()) - if not(pathList): -# print "[Reading] No *%s files in %s (%s - %s)"%(ext, path, -# datetime.datetime.combine(startDate,startTime).ctime(), -# datetime.datetime.combine(endDate,endTime).ctime()) + # sys.exit(-1) -# sys.exit(-1) + self.fileIndex = -1 + self.pathList = [] + self.filenameList = [] + return self.fileIndex = -1 - self.pathList = [] - self.filenameList = [] - return - - self.fileIndex = -1 - self.pathList = pathList - self.filenameList = filenameList - file_name = os.path.basename(filenameList[-1]) - basename, ext = os.path.splitext(file_name) - last_set = int(basename[-3:]) - - self.online = online - self.realtime = realtime - self.delay = delay - ext = ext.lower() - self.ext = ext - self.getByBlock = getblock - self.nTxs = nTxs - self.startTime = startTime - self.endTime = endTime - - #Added----------------- - self.selBlocksize = blocksize - self.selBlocktime = blocktime - - # Verbose----------- - self.verbose = verbose - self.warnings = warnings + self.pathList = pathList + self.filenameList = filenameList + file_name = os.path.basename(filenameList[-1]) + basename, ext = os.path.splitext(file_name) + last_set = int(basename[-3:]) + + self.online = online + self.realtime = realtime + self.delay = delay + ext = ext.lower() + self.ext = ext + self.getByBlock = getblock + self.nTxs = nTxs + self.startTime = startTime + self.endTime = endTime + + #Added----------------- + self.selBlocksize = blocksize + self.selBlocktime = blocktime + + # Verbose----------- + self.verbose = verbose + self.warnings = warnings - if not(self.setNextFile()): - if (startDate!=None) and (endDate!=None): - print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime()) - elif startDate != None: - print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime()) - else: - print "[Reading] No files" + if not(self.setNextFile()): + if (startDate!=None) and (endDate!=None): + print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime()) + elif startDate != None: + print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime()) + else: + print "[Reading] No files" - self.fileIndex = -1 - self.pathList = [] - self.filenameList = [] - return + self.fileIndex = -1 + self.pathList = [] + self.filenameList = [] + return -# self.getBasicHeader() + # self.getBasicHeader() - if last_set != None: - self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock + if last_set != None: + self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock return def getBasicHeader(self): @@ -1457,6 +1469,7 @@ class JRODataReader(JRODataIO): skip=None, cursor=None, warnings=True, + server=None, verbose=True, **kwargs): if not(self.isConfig): @@ -1481,10 +1494,13 @@ class JRODataReader(JRODataIO): skip=skip, cursor=cursor, warnings=warnings, + server=None, verbose=verbose) self.isConfig = True - - self.getData() + if self.server is None: + self.getData() + else: + self.getFromZMQ() class JRODataWriter(JRODataIO): diff --git a/schainpy/model/io/jroIO_voltage.py b/schainpy/model/io/jroIO_voltage.py index 1ad1910..a6fa073 100644 --- a/schainpy/model/io/jroIO_voltage.py +++ b/schainpy/model/io/jroIO_voltage.py @@ -10,6 +10,7 @@ from jroIO_base import LOCALTIME, JRODataReader, JRODataWriter from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, RadarControllerHeader, ProcessingHeader from schainpy.model.data.jrodata import Voltage +import zmq # from _sha import blocksize class VoltageReader(JRODataReader, ProcessingUnit): @@ -301,6 +302,12 @@ class VoltageReader(JRODataReader, ProcessingUnit): return + + def getFromZMQ(self): + self.dataOut = self.receiver.recv_pyobj() + print '[Receiving] {} - {}'.format(self.dataOut.type, + self.dataOut.datatime.ctime()) + def getData(self): """ getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut diff --git a/schainpy/trash b/schainpy/trash new file mode 100644 index 0000000..384299d --- /dev/null +++ b/schainpy/trash @@ -0,0 +1 @@ +You should install "digital_rf_hdf5" module if you want to read USRP data