@@ -217,7 +217,6 class ParameterConf(): | |||
|
217 | 217 | self.id = str(new_id) |
|
218 | 218 | |
|
219 | 219 | def setup(self, id, name, value, format='str'): |
|
220 | ||
|
221 | 220 | self.id = str(id) |
|
222 | 221 | self.name = name |
|
223 | 222 | if format == 'obj': |
@@ -757,26 +756,26 class ReadUnitConf(ProcUnitConf): | |||
|
757 | 756 | |
|
758 | 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 | 762 | #Compatible with old signal chain version |
|
763 | 763 | if datatype==None and name==None: |
|
764 | 764 | raise ValueError, "datatype or name should be defined" |
|
765 | ||
|
765 | ||
|
766 | 766 | if name==None: |
|
767 | 767 | if 'Reader' in datatype: |
|
768 | 768 | name = datatype |
|
769 | 769 | else: |
|
770 | 770 | name = '%sReader' %(datatype) |
|
771 | ||
|
772 | 771 | if datatype==None: |
|
773 | 772 | datatype = name.replace('Reader','') |
|
774 | 773 | |
|
775 | 774 | self.id = id |
|
776 | 775 | self.name = name |
|
777 | 776 | self.datatype = datatype |
|
778 | ||
|
779 | self.path = os.path.abspath(path) | |
|
777 | if path != '': | |
|
778 | self.path = os.path.abspath(path) | |
|
780 | 779 | self.startDate = startDate |
|
781 | 780 | self.endDate = endDate |
|
782 | 781 | self.startTime = startTime |
@@ -785,6 +784,7 class ReadUnitConf(ProcUnitConf): | |||
|
785 | 784 | self.inputId = '0' |
|
786 | 785 | self.parentId = parentId |
|
787 | 786 | self.queue = queue |
|
787 | self.server = server | |
|
788 | 788 | self.addRunOperation(**kwargs) |
|
789 | 789 | |
|
790 | 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 | 827 | opObj = self.addOperation(name = 'run', optype = 'self') |
|
828 | 828 | |
|
829 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |
|
830 |
opObj.addParameter(name=' |
|
|
831 |
opObj.addParameter(name=' |
|
|
832 |
opObj.addParameter(name=' |
|
|
833 |
opObj.addParameter(name=' |
|
|
834 |
opObj.addParameter(name=' |
|
|
835 |
opObj.addParameter(name=' |
|
|
836 | ||
|
837 | for key, value in kwargs.items(): | |
|
838 | opObj.addParameter(name=key, value=value, format=type(value).__name__) | |
|
829 | if self.server is None: | |
|
830 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |
|
831 | opObj.addParameter(name='path' , value=self.path, format='str') | |
|
832 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |
|
833 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |
|
834 | opObj.addParameter(name='startTime' , value=self.startTime, format='time') | |
|
835 | opObj.addParameter(name='endTime' , value=self.endTime, format='time') | |
|
836 | opObj.addParameter(name='queue' , value=self.queue, format='obj') | |
|
837 | for key, value in kwargs.items(): | |
|
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 | 843 | return opObj |
|
841 | 844 |
@@ -115,7 +115,6 class BasicHeader(Header): | |||
|
115 | 115 | dstFlag = None |
|
116 | 116 | errorCount = None |
|
117 | 117 | datatime = None |
|
118 | ||
|
119 | 118 | __LOCALTIME = None |
|
120 | 119 | |
|
121 | 120 | def __init__(self, useLocalTime=True): |
@@ -134,8 +133,12 class BasicHeader(Header): | |||
|
134 | 133 | def read(self, fp): |
|
135 | 134 | |
|
136 | 135 | try: |
|
137 | header = numpy.fromfile(fp, BASIC_STRUCTURE,1) | |
|
138 | ||
|
136 | if hasattr(fp, 'read'): | |
|
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 | 142 | except Exception, e: |
|
140 | 143 | print "BasicHeader: " |
|
141 | 144 | print e |
@@ -12,6 +12,7 import fnmatch | |||
|
12 | 12 | import inspect |
|
13 | 13 | import time, datetime |
|
14 | 14 | import traceback |
|
15 | import zmq | |
|
15 | 16 | |
|
16 | 17 | try: |
|
17 | 18 | from gevent import sleep |
@@ -993,12 +994,13 class JRODataReader(JRODataIO): | |||
|
993 | 994 | self.__isFirstTimeOnline = 0 |
|
994 | 995 | |
|
995 | 996 | def __setNewBlock(self): |
|
996 | ||
|
997 | if self.fp == None: | |
|
998 | return 0 | |
|
997 | if self.server is None: | |
|
998 | if self.fp == None: | |
|
999 | return 0 | |
|
999 | 1000 | |
|
1000 | 1001 | # if self.online: |
|
1001 | 1002 | # self.__jumpToLastBlock() |
|
1003 | print 'xxxx' | |
|
1002 | 1004 | |
|
1003 | 1005 | if self.flagIsNewFile: |
|
1004 | 1006 | self.lastUTTime = self.basicHeaderObj.utc |
@@ -1010,21 +1012,24 class JRODataReader(JRODataIO): | |||
|
1010 | 1012 | return 0 |
|
1011 | 1013 | else: |
|
1012 | 1014 | return 1 |
|
1013 | ||
|
1014 | currentSize = self.fileSize - self.fp.tell() | |
|
1015 | neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize | |
|
1016 | ||
|
1017 | if (currentSize >= neededSize): | |
|
1018 | self.basicHeaderObj.read(self.fp) | |
|
1015 | print 'xxxx' | |
|
1016 | if self.server is None: | |
|
1017 | currentSize = self.fileSize - self.fp.tell() | |
|
1018 | neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize | |
|
1019 | if (currentSize >= neededSize): | |
|
1020 | self.basicHeaderObj.read(self.fp) | |
|
1021 | self.lastUTTime = self.basicHeaderObj.utc | |
|
1022 | return 1 | |
|
1023 | else: | |
|
1024 | self.basicHeaderObj.read(self.zHeader) | |
|
1019 | 1025 | self.lastUTTime = self.basicHeaderObj.utc |
|
1020 | 1026 | return 1 |
|
1021 | ||
|
1022 | 1027 | if self.__waitNewBlock(): |
|
1023 | 1028 | self.lastUTTime = self.basicHeaderObj.utc |
|
1024 | 1029 | return 1 |
|
1025 | ||
|
1026 | if not(self.setNextFile()): | |
|
1027 | return 0 | |
|
1030 | if self.server is None: | |
|
1031 | if not(self.setNextFile()): | |
|
1032 | return 0 | |
|
1028 | 1033 | |
|
1029 | 1034 | deltaTime = self.basicHeaderObj.utc - self.lastUTTime # |
|
1030 | 1035 | self.lastUTTime = self.basicHeaderObj.utc |
@@ -1040,9 +1045,11 class JRODataReader(JRODataIO): | |||
|
1040 | 1045 | |
|
1041 | 1046 | #Skip block out of startTime and endTime |
|
1042 | 1047 | while True: |
|
1048 | print 'cxxxx' | |
|
1043 | 1049 | if not(self.__setNewBlock()): |
|
1050 | print 'returning' | |
|
1044 | 1051 | return 0 |
|
1045 | ||
|
1052 | print 'dxxx' | |
|
1046 | 1053 | if not(self.readBlock()): |
|
1047 | 1054 | return 0 |
|
1048 | 1055 | |
@@ -1275,20 +1282,19 class JRODataReader(JRODataIO): | |||
|
1275 | 1282 | warnings=True, |
|
1276 | 1283 | verbose=True, |
|
1277 | 1284 | server=None): |
|
1278 | ||
|
1279 | 1285 | if server is not None: |
|
1280 | server = kwargs.get('server', 'zmq.pipe') | |
|
1281 | 1286 | if 'tcp://' in server: |
|
1282 | 1287 | address = server |
|
1283 | 1288 | else: |
|
1284 | 1289 | address = 'ipc:///tmp/%s' % server |
|
1285 |
self. |
|
|
1290 | self.server = address | |
|
1286 | 1291 | self.context = zmq.Context() |
|
1287 | 1292 | self.receiver = self.context.socket(zmq.PULL) |
|
1288 |
self.receiver.bind(self. |
|
|
1293 | self.receiver.bind(self.server) | |
|
1289 | 1294 | time.sleep(0.5) |
|
1290 |
print '[Starting] ReceiverData from {}'.format(self. |
|
|
1291 |
else: |
|
|
1295 | print '[Starting] ReceiverData from {}'.format(self.server) | |
|
1296 | else: | |
|
1297 | self.server = None | |
|
1292 | 1298 | if path == None: |
|
1293 | 1299 | raise ValueError, "[Reading] The path is not valid" |
|
1294 | 1300 | |
@@ -1494,13 +1500,11 class JRODataReader(JRODataIO): | |||
|
1494 | 1500 | skip=skip, |
|
1495 | 1501 | cursor=cursor, |
|
1496 | 1502 | warnings=warnings, |
|
1497 |
server= |
|
|
1503 | server=server, | |
|
1498 | 1504 | verbose=verbose) |
|
1499 | 1505 | self.isConfig = True |
|
1500 | if self.server is None: | |
|
1501 |
|
|
|
1502 | else: | |
|
1503 | self.getFromZMQ() | |
|
1506 | print 'hola' | |
|
1507 | self.getData() | |
|
1504 | 1508 | |
|
1505 | 1509 | class JRODataWriter(JRODataIO): |
|
1506 | 1510 |
@@ -189,6 +189,7 class VoltageReader(JRODataReader, ProcessingUnit): | |||
|
189 | 189 | pts2read = self.processingHeaderObj.profilesPerBlock * self.processingHeaderObj.nHeights * self.systemHeaderObj.nChannels |
|
190 | 190 | self.blocksize = pts2read |
|
191 | 191 | |
|
192 | ||
|
192 | 193 | |
|
193 | 194 | def readBlock(self): |
|
194 | 195 | """ |
@@ -213,11 +214,23 class VoltageReader(JRODataReader, ProcessingUnit): | |||
|
213 | 214 | Exceptions: |
|
214 | 215 | Si un bloque leido no es un bloque valido |
|
215 | 216 | """ |
|
216 | current_pointer_location = self.fp.tell() | |
|
217 | junk = numpy.fromfile( self.fp, self.dtype, self.blocksize ) | |
|
217 | ||
|
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 | 231 | try: |
|
220 | 232 | junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) ) |
|
233 | print'junked' | |
|
221 | 234 | except: |
|
222 | 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 | 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 | 318 | def getData(self): |
|
312 | 319 | """ |
|
313 | 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 | 351 | self.flagDiscontinuousBlock |
|
345 | 352 | self.flagIsNewBlock |
|
346 | 353 | """ |
|
347 | ||
|
354 | print 1 | |
|
348 | 355 | if self.flagNoMoreFiles: |
|
349 | 356 | self.dataOut.flagNoData = True |
|
350 | 357 | print 'Process finished' |
|
351 | 358 | return 0 |
|
352 | ||
|
359 | print 2 | |
|
353 | 360 | self.flagDiscontinuousBlock = 0 |
|
354 | 361 | self.flagIsNewBlock = 0 |
|
355 | ||
|
362 | print 3 | |
|
356 | 363 | if self.__hasNotDataInBuffer(): |
|
357 | 364 | |
|
358 | 365 | if not( self.readNextBlock() ): |
@@ -361,7 +368,7 class VoltageReader(JRODataReader, ProcessingUnit): | |||
|
361 | 368 | self.getFirstHeader() |
|
362 | 369 | |
|
363 | 370 | self.reshapeData() |
|
364 | ||
|
371 | print 4 | |
|
365 | 372 | if self.datablock is None: |
|
366 | 373 | self.dataOut.flagNoData = True |
|
367 | 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