@@ -217,7 +217,6 class ParameterConf(): | |||||
217 | self.id = str(new_id) |
|
217 | self.id = str(new_id) | |
218 |
|
218 | |||
219 | def setup(self, id, name, value, format='str'): |
|
219 | def setup(self, id, name, value, format='str'): | |
220 |
|
||||
221 | self.id = str(id) |
|
220 | self.id = str(id) | |
222 | self.name = name |
|
221 | self.name = name | |
223 | if format == 'obj': |
|
222 | if format == 'obj': | |
@@ -757,26 +756,26 class ReadUnitConf(ProcUnitConf): | |||||
757 |
|
756 | |||
758 | return self.ELEMENTNAME |
|
757 | return self.ELEMENTNAME | |
759 |
|
758 | |||
760 |
def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", |
|
759 | def setup(self, id, name, datatype, path='', startDate="", endDate="", startTime="", | |
|
760 | endTime="", parentId=None, queue=None, server=None, **kwargs): | |||
761 |
|
761 | |||
762 | #Compatible with old signal chain version |
|
762 | #Compatible with old signal chain version | |
763 | if datatype==None and name==None: |
|
763 | if datatype==None and name==None: | |
764 | raise ValueError, "datatype or name should be defined" |
|
764 | raise ValueError, "datatype or name should be defined" | |
765 |
|
765 | |||
766 | if name==None: |
|
766 | if name==None: | |
767 | if 'Reader' in datatype: |
|
767 | if 'Reader' in datatype: | |
768 | name = datatype |
|
768 | name = datatype | |
769 | else: |
|
769 | else: | |
770 | name = '%sReader' %(datatype) |
|
770 | name = '%sReader' %(datatype) | |
771 |
|
||||
772 | if datatype==None: |
|
771 | if datatype==None: | |
773 | datatype = name.replace('Reader','') |
|
772 | datatype = name.replace('Reader','') | |
774 |
|
773 | |||
775 | self.id = id |
|
774 | self.id = id | |
776 | self.name = name |
|
775 | self.name = name | |
777 | self.datatype = datatype |
|
776 | self.datatype = datatype | |
778 |
|
777 | if path != '': | ||
779 | self.path = os.path.abspath(path) |
|
778 | self.path = os.path.abspath(path) | |
780 | self.startDate = startDate |
|
779 | self.startDate = startDate | |
781 | self.endDate = endDate |
|
780 | self.endDate = endDate | |
782 | self.startTime = startTime |
|
781 | self.startTime = startTime | |
@@ -785,6 +784,7 class ReadUnitConf(ProcUnitConf): | |||||
785 | self.inputId = '0' |
|
784 | self.inputId = '0' | |
786 | self.parentId = parentId |
|
785 | self.parentId = parentId | |
787 | self.queue = queue |
|
786 | self.queue = queue | |
|
787 | self.server = server | |||
788 | self.addRunOperation(**kwargs) |
|
788 | self.addRunOperation(**kwargs) | |
789 |
|
789 | |||
790 | def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs): |
|
790 | def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs): | |
@@ -826,16 +826,19 class ReadUnitConf(ProcUnitConf): | |||||
826 |
|
826 | |||
827 | opObj = self.addOperation(name = 'run', optype = 'self') |
|
827 | opObj = self.addOperation(name = 'run', optype = 'self') | |
828 |
|
828 | |||
829 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') |
|
829 | if self.server is None: | |
830 |
opObj.addParameter(name=' |
|
830 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |
831 |
opObj.addParameter(name=' |
|
831 | opObj.addParameter(name='path' , value=self.path, format='str') | |
832 |
opObj.addParameter(name=' |
|
832 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |
833 |
opObj.addParameter(name=' |
|
833 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |
834 |
opObj.addParameter(name=' |
|
834 | opObj.addParameter(name='startTime' , value=self.startTime, format='time') | |
835 |
opObj.addParameter(name=' |
|
835 | opObj.addParameter(name='endTime' , value=self.endTime, format='time') | |
836 |
|
836 | opObj.addParameter(name='queue' , value=self.queue, format='obj') | ||
837 | for key, value in kwargs.items(): |
|
837 | for key, value in kwargs.items(): | |
838 | opObj.addParameter(name=key, value=value, format=type(value).__name__) |
|
838 | opObj.addParameter(name=key, value=value, format=type(value).__name__) | |
|
839 | else: | |||
|
840 | opObj.addParameter(name='server' , value=self.server, format='str') | |||
|
841 | ||||
839 |
|
842 | |||
840 | return opObj |
|
843 | return opObj | |
841 |
|
844 |
@@ -115,7 +115,6 class BasicHeader(Header): | |||||
115 | dstFlag = None |
|
115 | dstFlag = None | |
116 | errorCount = None |
|
116 | errorCount = None | |
117 | datatime = None |
|
117 | datatime = None | |
118 |
|
||||
119 | __LOCALTIME = None |
|
118 | __LOCALTIME = None | |
120 |
|
119 | |||
121 | def __init__(self, useLocalTime=True): |
|
120 | def __init__(self, useLocalTime=True): | |
@@ -134,8 +133,12 class BasicHeader(Header): | |||||
134 | def read(self, fp): |
|
133 | def read(self, fp): | |
135 |
|
134 | |||
136 | try: |
|
135 | try: | |
137 | header = numpy.fromfile(fp, BASIC_STRUCTURE,1) |
|
136 | if hasattr(fp, 'read'): | |
138 |
|
137 | print 'fromfile' | ||
|
138 | header = numpy.fromfile(fp, BASIC_STRUCTURE,1) | |||
|
139 | else: | |||
|
140 | print 'fromstring' | |||
|
141 | header = numpy.fromstring(fp, BASIC_STRUCTURE,1) | |||
139 | except Exception, e: |
|
142 | except Exception, e: | |
140 | print "BasicHeader: " |
|
143 | print "BasicHeader: " | |
141 | print e |
|
144 | print e |
@@ -12,6 +12,7 import fnmatch | |||||
12 | import inspect |
|
12 | import inspect | |
13 | import time, datetime |
|
13 | import time, datetime | |
14 | import traceback |
|
14 | import traceback | |
|
15 | import zmq | |||
15 |
|
16 | |||
16 | try: |
|
17 | try: | |
17 | from gevent import sleep |
|
18 | from gevent import sleep | |
@@ -993,12 +994,13 class JRODataReader(JRODataIO): | |||||
993 | self.__isFirstTimeOnline = 0 |
|
994 | self.__isFirstTimeOnline = 0 | |
994 |
|
995 | |||
995 | def __setNewBlock(self): |
|
996 | def __setNewBlock(self): | |
996 |
|
997 | if self.server is None: | ||
997 | if self.fp == None: |
|
998 | if self.fp == None: | |
998 | return 0 |
|
999 | return 0 | |
999 |
|
1000 | |||
1000 | # if self.online: |
|
1001 | # if self.online: | |
1001 | # self.__jumpToLastBlock() |
|
1002 | # self.__jumpToLastBlock() | |
|
1003 | print 'xxxx' | |||
1002 |
|
1004 | |||
1003 | if self.flagIsNewFile: |
|
1005 | if self.flagIsNewFile: | |
1004 | self.lastUTTime = self.basicHeaderObj.utc |
|
1006 | self.lastUTTime = self.basicHeaderObj.utc | |
@@ -1010,21 +1012,24 class JRODataReader(JRODataIO): | |||||
1010 | return 0 |
|
1012 | return 0 | |
1011 | else: |
|
1013 | else: | |
1012 | return 1 |
|
1014 | return 1 | |
1013 |
|
1015 | print 'xxxx' | ||
1014 | currentSize = self.fileSize - self.fp.tell() |
|
1016 | if self.server is None: | |
1015 | neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize |
|
1017 | currentSize = self.fileSize - self.fp.tell() | |
1016 |
|
1018 | neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize | ||
1017 | if (currentSize >= neededSize): |
|
1019 | if (currentSize >= neededSize): | |
1018 | self.basicHeaderObj.read(self.fp) |
|
1020 | self.basicHeaderObj.read(self.fp) | |
|
1021 | self.lastUTTime = self.basicHeaderObj.utc | |||
|
1022 | return 1 | |||
|
1023 | else: | |||
|
1024 | self.basicHeaderObj.read(self.zHeader) | |||
1019 | self.lastUTTime = self.basicHeaderObj.utc |
|
1025 | self.lastUTTime = self.basicHeaderObj.utc | |
1020 | return 1 |
|
1026 | return 1 | |
1021 |
|
||||
1022 | if self.__waitNewBlock(): |
|
1027 | if self.__waitNewBlock(): | |
1023 | self.lastUTTime = self.basicHeaderObj.utc |
|
1028 | self.lastUTTime = self.basicHeaderObj.utc | |
1024 | return 1 |
|
1029 | return 1 | |
1025 |
|
1030 | if self.server is None: | ||
1026 | if not(self.setNextFile()): |
|
1031 | if not(self.setNextFile()): | |
1027 | return 0 |
|
1032 | return 0 | |
1028 |
|
1033 | |||
1029 | deltaTime = self.basicHeaderObj.utc - self.lastUTTime # |
|
1034 | deltaTime = self.basicHeaderObj.utc - self.lastUTTime # | |
1030 | self.lastUTTime = self.basicHeaderObj.utc |
|
1035 | self.lastUTTime = self.basicHeaderObj.utc | |
@@ -1040,9 +1045,11 class JRODataReader(JRODataIO): | |||||
1040 |
|
1045 | |||
1041 | #Skip block out of startTime and endTime |
|
1046 | #Skip block out of startTime and endTime | |
1042 | while True: |
|
1047 | while True: | |
|
1048 | print 'cxxxx' | |||
1043 | if not(self.__setNewBlock()): |
|
1049 | if not(self.__setNewBlock()): | |
|
1050 | print 'returning' | |||
1044 | return 0 |
|
1051 | return 0 | |
1045 |
|
1052 | print 'dxxx' | ||
1046 | if not(self.readBlock()): |
|
1053 | if not(self.readBlock()): | |
1047 | return 0 |
|
1054 | return 0 | |
1048 |
|
1055 | |||
@@ -1275,20 +1282,19 class JRODataReader(JRODataIO): | |||||
1275 | warnings=True, |
|
1282 | warnings=True, | |
1276 | verbose=True, |
|
1283 | verbose=True, | |
1277 | server=None): |
|
1284 | server=None): | |
1278 |
|
||||
1279 | if server is not None: |
|
1285 | if server is not None: | |
1280 | server = kwargs.get('server', 'zmq.pipe') |
|
|||
1281 | if 'tcp://' in server: |
|
1286 | if 'tcp://' in server: | |
1282 | address = server |
|
1287 | address = server | |
1283 | else: |
|
1288 | else: | |
1284 | address = 'ipc:///tmp/%s' % server |
|
1289 | address = 'ipc:///tmp/%s' % server | |
1285 |
self. |
|
1290 | self.server = address | |
1286 | self.context = zmq.Context() |
|
1291 | self.context = zmq.Context() | |
1287 | self.receiver = self.context.socket(zmq.PULL) |
|
1292 | self.receiver = self.context.socket(zmq.PULL) | |
1288 |
self.receiver.bind(self. |
|
1293 | self.receiver.bind(self.server) | |
1289 | time.sleep(0.5) |
|
1294 | time.sleep(0.5) | |
1290 |
print '[Starting] ReceiverData from {}'.format(self. |
|
1295 | print '[Starting] ReceiverData from {}'.format(self.server) | |
1291 |
else: |
|
1296 | else: | |
|
1297 | self.server = None | |||
1292 | if path == None: |
|
1298 | if path == None: | |
1293 | raise ValueError, "[Reading] The path is not valid" |
|
1299 | raise ValueError, "[Reading] The path is not valid" | |
1294 |
|
1300 | |||
@@ -1494,13 +1500,11 class JRODataReader(JRODataIO): | |||||
1494 | skip=skip, |
|
1500 | skip=skip, | |
1495 | cursor=cursor, |
|
1501 | cursor=cursor, | |
1496 | warnings=warnings, |
|
1502 | warnings=warnings, | |
1497 |
server= |
|
1503 | server=server, | |
1498 | verbose=verbose) |
|
1504 | verbose=verbose) | |
1499 | self.isConfig = True |
|
1505 | self.isConfig = True | |
1500 | if self.server is None: |
|
1506 | print 'hola' | |
1501 |
|
|
1507 | self.getData() | |
1502 | else: |
|
|||
1503 | self.getFromZMQ() |
|
|||
1504 |
|
1508 | |||
1505 | class JRODataWriter(JRODataIO): |
|
1509 | class JRODataWriter(JRODataIO): | |
1506 |
|
1510 |
@@ -189,6 +189,7 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
189 | pts2read = self.processingHeaderObj.profilesPerBlock * self.processingHeaderObj.nHeights * self.systemHeaderObj.nChannels |
|
189 | pts2read = self.processingHeaderObj.profilesPerBlock * self.processingHeaderObj.nHeights * self.systemHeaderObj.nChannels | |
190 | self.blocksize = pts2read |
|
190 | self.blocksize = pts2read | |
191 |
|
191 | |||
|
192 | ||||
192 |
|
193 | |||
193 | def readBlock(self): |
|
194 | def readBlock(self): | |
194 | """ |
|
195 | """ | |
@@ -213,11 +214,23 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
213 | Exceptions: |
|
214 | Exceptions: | |
214 | Si un bloque leido no es un bloque valido |
|
215 | Si un bloque leido no es un bloque valido | |
215 | """ |
|
216 | """ | |
216 | current_pointer_location = self.fp.tell() |
|
217 | ||
217 | junk = numpy.fromfile( self.fp, self.dtype, self.blocksize ) |
|
218 | print 'READ BLOCK' | |
|
219 | if self.server is not None: | |||
|
220 | self.zBlock = self.receiver.recv() | |||
|
221 | self.zHeader = self.zBlock[:24] | |||
|
222 | self.zDataBlock = self.zBlock[24:] | |||
|
223 | junk = numpy.fromstring(self.zDataBlock, numpy.dtype([('real','<i4'),('imag','<i4')])) | |||
|
224 | self.processingHeaderObj.profilesPerBlock = 240 | |||
|
225 | self.processingHeaderObj.nHeights = 248 | |||
|
226 | self.systemHeaderObj.nChannels | |||
|
227 | else: | |||
|
228 | current_pointer_location = self.fp.tell() | |||
|
229 | junk = numpy.fromfile( self.fp, self.dtype, self.blocksize ) | |||
218 |
|
230 | |||
219 | try: |
|
231 | try: | |
220 | junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) ) |
|
232 | junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) ) | |
|
233 | print'junked' | |||
221 | except: |
|
234 | except: | |
222 | #print "The read block (%3d) has not enough data" %self.nReadBlocks |
|
235 | #print "The read block (%3d) has not enough data" %self.nReadBlocks | |
223 |
|
236 | |||
@@ -302,12 +315,6 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
302 |
|
315 | |||
303 | return |
|
316 | return | |
304 |
|
317 | |||
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 |
|
||||
311 | def getData(self): |
|
318 | def getData(self): | |
312 | """ |
|
319 | """ | |
313 | getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut |
|
320 | getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut | |
@@ -344,15 +351,15 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
344 | self.flagDiscontinuousBlock |
|
351 | self.flagDiscontinuousBlock | |
345 | self.flagIsNewBlock |
|
352 | self.flagIsNewBlock | |
346 | """ |
|
353 | """ | |
347 |
|
354 | print 1 | ||
348 | if self.flagNoMoreFiles: |
|
355 | if self.flagNoMoreFiles: | |
349 | self.dataOut.flagNoData = True |
|
356 | self.dataOut.flagNoData = True | |
350 | print 'Process finished' |
|
357 | print 'Process finished' | |
351 | return 0 |
|
358 | return 0 | |
352 |
|
359 | print 2 | ||
353 | self.flagDiscontinuousBlock = 0 |
|
360 | self.flagDiscontinuousBlock = 0 | |
354 | self.flagIsNewBlock = 0 |
|
361 | self.flagIsNewBlock = 0 | |
355 |
|
362 | print 3 | ||
356 | if self.__hasNotDataInBuffer(): |
|
363 | if self.__hasNotDataInBuffer(): | |
357 |
|
364 | |||
358 | if not( self.readNextBlock() ): |
|
365 | if not( self.readNextBlock() ): | |
@@ -361,7 +368,7 class VoltageReader(JRODataReader, ProcessingUnit): | |||||
361 | self.getFirstHeader() |
|
368 | self.getFirstHeader() | |
362 |
|
369 | |||
363 | self.reshapeData() |
|
370 | self.reshapeData() | |
364 |
|
371 | print 4 | ||
365 | if self.datablock is None: |
|
372 | if self.datablock is None: | |
366 | self.dataOut.flagNoData = True |
|
373 | self.dataOut.flagNoData = True | |
367 | return 0 |
|
374 | return 0 |
@@ -1,1 +1,1 | |||||
1 | <Project description="HF_EXAMPLE" id="191" name="test01"><ReadUnit datatype="Spectra" id="1911" inputId="0" name="SpectraReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="SpectraReader" /><Parameter format="str" id="191112" name="path" value="/home/nanosat/data/sp1_f0" /><Parameter format="date" id="191113" name="startDate" value="2017/01/28" /><Parameter format="date" id="191114" name="endDate" value="2017/01/28" /><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="cursor" value="5" /><Parameter format="int" id="191119" name="skip" value="177" /><Parameter format="int" id="191120" name="walk" value="1" /><Parameter format="int" id="191121" name="verbose" value="1" /><Parameter format="int" id="191122" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="Parameters" id="1913" inputId="1911" name="ParametersProc"><Operation id="19131" name="run" priority="1" type="self" /><Operation id="19132" name="SpectralMoments" priority="2" type="other" /><Operation id="19133" name="PublishData" priority="3" type="other"><Parameter format="int" id="191331" name="zeromq" value="1" /><Parameter format="bool" id="191332" name="verbose" value="0" /><Parameter format="int" id="191333" name="delay" value="0" /></Operation></ProcUnit><ProcUnit datatype="Spectra" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self" /></ProcUnit></Project> |
|
1 | <Project description="test" id="191" name="john"><ReadUnit datatype="VoltageReader" id="1911" inputId="0" name="VoltageReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="server" value="john" /></Operation></ReadUnit><ProcUnit datatype="SpectraProc" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self"><Parameter format="int" id="191211" name="nFFTPoints" value="64" /></Operation><Operation id="19122" name="SpectraPlot" priority="2" type="other"><Parameter format="int" id="191221" name="id" value="500" /><Parameter format="str" id="191222" name="wintitle" value="Jicamarca Radio Observatory" /><Parameter format="int" id="191223" name="showprofile" value="0" /></Operation></ProcUnit></Project> No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now