##// END OF EJS Templates
receiving as unit reader
José Chávez -
r961:80664bd78a14
parent child
Show More
@@ -0,0 +1,1
1 You should install "digital_rf_hdf5" module if you want to read USRP data
@@ -1,1 +1,1
1 <Project description="A schain project" id="191" name="project"><ReadUnit datatype="Voltage" id="1911" inputId="0" name="VoltageReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="VoltageReader" /><Parameter format="str" id="191112" name="path" value="/home/nanosat/schain" /><Parameter format="date" id="191113" name="startDate" value="1970/01/01" /><Parameter format="date" id="191114" name="endDate" value="2017/12/31" /><Parameter format="time" id="191115" name="startTime" value="00:00:00" /><Parameter format="time" id="191116" name="endTime" value="23:59:59" /><Parameter format="int" id="191118" name="walk" value="1" /><Parameter format="int" id="191119" name="verbose" value="1" /><Parameter format="int" id="191120" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="Voltage" id="1912" inputId="1911" name="VoltageProc"><Operation id="19121" name="run" priority="1" type="self" /><Operation id="19122" name="ProfileSelector" priority="2" type="other"><Parameter format="intlist" id="191221" name="profileRangeList" value="120,183" /></Operation><Operation id="19123" name="RTIPlot" priority="3" type="plotter"><Parameter format="str" id="191231" name="wintitle" value="Jicamarca Radio Observatory" /><Parameter format="int" id="191232" name="showprofile" value="0" /><Parameter format="int" id="191233" name="xmin" value="0" /><Parameter format="int" id="191234" name="xmax" value="24" /><Parameter format="str" id="191235" name="figpath" value="/home/nanosat/schain/figs" /><Parameter format="int" id="191236" name="wr_period" value="5" /><Parameter format="int" id="191237" name="exp_code" value="22" /></Operation></ProcUnit></Project> No newline at end of file
1 <Project description="A schain project" id="191" name="project"><ReadUnit datatype="VoltageReader" id="1911" inputId="0" name="VoltageReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="VoltageReader" /><Parameter format="str" id="191112" name="path" value="/home/nanosat/schain" /><Parameter format="date" id="191113" name="startDate" value="1970/01/01" /><Parameter format="date" id="191114" name="endDate" value="2017/12/31" /><Parameter format="time" id="191115" name="startTime" value="00:00:00" /><Parameter format="time" id="191116" name="endTime" value="23:59:59" /><Parameter format="int" id="191118" name="walk" value="1" /><Parameter format="int" id="191119" name="verbose" value="1" /><Parameter format="int" id="191120" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="VoltageProc" id="1912" inputId="1911" name="VoltageProc"><Operation id="19121" name="run" priority="1" type="self" /><Operation id="19122" name="ProfileSelector" priority="2" type="other"><Parameter format="intlist" id="191221" name="profileRangeList" value="120,183" /></Operation><Operation id="19123" name="RTIPlot" priority="3" type="other"><Parameter format="str" id="191231" name="wintitle" value="Jicamarca Radio Observatory" /><Parameter format="int" id="191232" name="showprofile" value="0" /><Parameter format="int" id="191233" name="xmin" value="0" /><Parameter format="int" id="191234" name="xmax" value="24" /><Parameter format="str" id="191235" name="figpath" value="/home/nanosat/schain/figs" /><Parameter format="int" id="191236" name="wr_period" value="5" /><Parameter format="int" id="191237" name="exp_code" value="22" /></Operation></ProcUnit></Project> No newline at end of file
@@ -11,7 +11,6 import numpy
11 import fnmatch
11 import fnmatch
12 import inspect
12 import inspect
13 import time, datetime
13 import time, datetime
14 #import h5py
15 import traceback
14 import traceback
16
15
17 try:
16 try:
@@ -1274,99 +1273,112 class JRODataReader(JRODataIO):
1274 skip=None,
1273 skip=None,
1275 cursor=None,
1274 cursor=None,
1276 warnings=True,
1275 warnings=True,
1277 verbose=True):
1276 verbose=True,
1278
1277 server=None):
1279 if path == None:
1278
1280 raise ValueError, "[Reading] The path is not valid"
1279 if server is not None:
1281
1280 server = kwargs.get('server', 'zmq.pipe')
1282 if ext == None:
1281 if 'tcp://' in server:
1283 ext = self.ext
1282 address = server
1284
1283 else:
1285 if online:
1284 address = 'ipc:///tmp/%s' % server
1286 print "[Reading] Searching files in online mode..."
1285 self.address = address
1287
1286 self.context = zmq.Context()
1288 for nTries in range( self.nTries ):
1287 self.receiver = self.context.socket(zmq.PULL)
1289 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
1288 self.receiver.bind(self.address)
1290
1289 time.sleep(0.5)
1291 if fullpath:
1290 print '[Starting] ReceiverData from {}'.format(self.address)
1292 break
1291 else:
1293
1292 if path == None:
1294 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
1293 raise ValueError, "[Reading] The path is not valid"
1295 sleep( self.delay )
1294
1296
1295 if ext == None:
1297 if not(fullpath):
1296 ext = self.ext
1298 print "[Reading] There 'isn't any valid file in %s" % path
1297
1299 return
1298 if online:
1300
1299 print "[Reading] Searching files in online mode..."
1301 self.year = year
1300
1302 self.doy = doy
1301 for nTries in range( self.nTries ):
1303 self.set = set - 1
1302 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
1304 self.path = path
1303
1305 self.foldercounter = foldercounter
1304 if fullpath:
1306 last_set = None
1305 break
1306
1307 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
1308 sleep( self.delay )
1309
1310 if not(fullpath):
1311 print "[Reading] There 'isn't any valid file in %s" % path
1312 return
1313
1314 self.year = year
1315 self.doy = doy
1316 self.set = set - 1
1317 self.path = path
1318 self.foldercounter = foldercounter
1319 last_set = None
1320 else:
1321 print "[Reading] Searching files in offline mode ..."
1322 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
1323 startTime=startTime, endTime=endTime,
1324 set=set, expLabel=expLabel, ext=ext,
1325 walk=walk, cursor=cursor,
1326 skip=skip, queue=queue)
1307
1327
1308 else:
1328 if not(pathList):
1309 print "[Reading] Searching files in offline mode ..."
1329 # print "[Reading] No *%s files in %s (%s - %s)"%(ext, path,
1310 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
1330 # datetime.datetime.combine(startDate,startTime).ctime(),
1311 startTime=startTime, endTime=endTime,
1331 # datetime.datetime.combine(endDate,endTime).ctime())
1312 set=set, expLabel=expLabel, ext=ext,
1313 walk=walk, cursor=cursor,
1314 skip=skip, queue=queue)
1315
1332
1316 if not(pathList):
1333 # sys.exit(-1)
1317 # print "[Reading] No *%s files in %s (%s - %s)"%(ext, path,
1318 # datetime.datetime.combine(startDate,startTime).ctime(),
1319 # datetime.datetime.combine(endDate,endTime).ctime())
1320
1334
1321 # sys.exit(-1)
1335 self.fileIndex = -1
1336 self.pathList = []
1337 self.filenameList = []
1338 return
1322
1339
1323 self.fileIndex = -1
1340 self.fileIndex = -1
1324 self.pathList = []
1341 self.pathList = pathList
1325 self.filenameList = []
1342 self.filenameList = filenameList
1326 return
1343 file_name = os.path.basename(filenameList[-1])
1327
1344 basename, ext = os.path.splitext(file_name)
1328 self.fileIndex = -1
1345 last_set = int(basename[-3:])
1329 self.pathList = pathList
1346
1330 self.filenameList = filenameList
1347 self.online = online
1331 file_name = os.path.basename(filenameList[-1])
1348 self.realtime = realtime
1332 basename, ext = os.path.splitext(file_name)
1349 self.delay = delay
1333 last_set = int(basename[-3:])
1350 ext = ext.lower()
1334
1351 self.ext = ext
1335 self.online = online
1352 self.getByBlock = getblock
1336 self.realtime = realtime
1353 self.nTxs = nTxs
1337 self.delay = delay
1354 self.startTime = startTime
1338 ext = ext.lower()
1355 self.endTime = endTime
1339 self.ext = ext
1356
1340 self.getByBlock = getblock
1357 #Added-----------------
1341 self.nTxs = nTxs
1358 self.selBlocksize = blocksize
1342 self.startTime = startTime
1359 self.selBlocktime = blocktime
1343 self.endTime = endTime
1360
1344
1361 # Verbose-----------
1345 #Added-----------------
1362 self.verbose = verbose
1346 self.selBlocksize = blocksize
1363 self.warnings = warnings
1347 self.selBlocktime = blocktime
1348
1349 # Verbose-----------
1350 self.verbose = verbose
1351 self.warnings = warnings
1352
1364
1353 if not(self.setNextFile()):
1365 if not(self.setNextFile()):
1354 if (startDate!=None) and (endDate!=None):
1366 if (startDate!=None) and (endDate!=None):
1355 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1367 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1356 elif startDate != None:
1368 elif startDate != None:
1357 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1369 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1358 else:
1370 else:
1359 print "[Reading] No files"
1371 print "[Reading] No files"
1360
1372
1361 self.fileIndex = -1
1373 self.fileIndex = -1
1362 self.pathList = []
1374 self.pathList = []
1363 self.filenameList = []
1375 self.filenameList = []
1364 return
1376 return
1365
1377
1366 # self.getBasicHeader()
1378 # self.getBasicHeader()
1367
1379
1368 if last_set != None:
1380 if last_set != None:
1369 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1381 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1370 return
1382 return
1371
1383
1372 def getBasicHeader(self):
1384 def getBasicHeader(self):
@@ -1457,6 +1469,7 class JRODataReader(JRODataIO):
1457 skip=None,
1469 skip=None,
1458 cursor=None,
1470 cursor=None,
1459 warnings=True,
1471 warnings=True,
1472 server=None,
1460 verbose=True, **kwargs):
1473 verbose=True, **kwargs):
1461
1474
1462 if not(self.isConfig):
1475 if not(self.isConfig):
@@ -1481,10 +1494,13 class JRODataReader(JRODataIO):
1481 skip=skip,
1494 skip=skip,
1482 cursor=cursor,
1495 cursor=cursor,
1483 warnings=warnings,
1496 warnings=warnings,
1497 server=None,
1484 verbose=verbose)
1498 verbose=verbose)
1485 self.isConfig = True
1499 self.isConfig = True
1486
1500 if self.server is None:
1487 self.getData()
1501 self.getData()
1502 else:
1503 self.getFromZMQ()
1488
1504
1489 class JRODataWriter(JRODataIO):
1505 class JRODataWriter(JRODataIO):
1490
1506
@@ -10,6 +10,7 from jroIO_base import LOCALTIME, JRODataReader, JRODataWriter
10 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
10 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
11 from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, RadarControllerHeader, ProcessingHeader
11 from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, RadarControllerHeader, ProcessingHeader
12 from schainpy.model.data.jrodata import Voltage
12 from schainpy.model.data.jrodata import Voltage
13 import zmq
13 # from _sha import blocksize
14 # from _sha import blocksize
14
15
15 class VoltageReader(JRODataReader, ProcessingUnit):
16 class VoltageReader(JRODataReader, ProcessingUnit):
@@ -301,6 +302,12 class VoltageReader(JRODataReader, ProcessingUnit):
301
302
302 return
303 return
303
304
305
306 def getFromZMQ(self):
307 self.dataOut = self.receiver.recv_pyobj()
308 print '[Receiving] {} - {}'.format(self.dataOut.type,
309 self.dataOut.datatime.ctime())
310
304 def getData(self):
311 def getData(self):
305 """
312 """
306 getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut
313 getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut
General Comments 0
You need to be logged in to leave comments. Login now