##// END OF EJS Templates
funcionando en mi compu
José Chávez -
r900:75bc6c54930e
parent child
Show More
@@ -1,11 +1,10
1 ## ROADMAP
2 ## SCHAIN BRANCHES
3
1 ROADMAP FOR SCHAIN BRANCHES
2 ===============================
3 <Enter>
4 4 ### BRANCH - SCHAIN_MP
5
6 5 * Revisar si funciona con varios publishers.
7 6 * Revisar xRange y reinicialización de gráfico.
8 7 * Grabar cada spectra independientemente.
9 8 * Agregar kwargs al init
10 9 * Agregar gráficos restantes
11 10 * Presentación
@@ -1,382 +1,383
1 1 '''
2 2 @author: Juan C. Espinoza
3 3 '''
4 4
5 5 import time
6 6 import json
7 7 import numpy
8 8 import paho.mqtt.client as mqtt
9 9 import zmq
10 10 import cPickle as pickle
11 11 import datetime
12 12 from zmq.utils.monitor import recv_monitor_message
13 13 from functools import wraps
14 14 from threading import Thread
15 15 from multiprocessing import Process
16 16
17 17 from schainpy.model.proc.jroproc_base import Operation, ProcessingUnit
18 18
19 19 MAXNUMX = 100
20 20 MAXNUMY = 100
21 21
22 22 class PrettyFloat(float):
23 23 def __repr__(self):
24 24 return '%.2f' % self
25 25
26 26 def roundFloats(obj):
27 27 if isinstance(obj, list):
28 28 return map(roundFloats, obj)
29 29 elif isinstance(obj, float):
30 30 return round(obj, 2)
31 31
32 32
33 33 class throttle(object):
34 34 """Decorator that prevents a function from being called more than once every
35 35 time period.
36 36 To create a function that cannot be called more than once a minute, but
37 37 will sleep until it can be called:
38 38 @throttle(minutes=1)
39 39 def foo():
40 40 pass
41 41
42 42 for i in range(10):
43 43 foo()
44 44 print "This function has run %s times." % i
45 45 """
46 46
47 47 def __init__(self, seconds=0, minutes=0, hours=0):
48 48 self.throttle_period = datetime.timedelta(
49 49 seconds=seconds, minutes=minutes, hours=hours
50 50 )
51 51
52 52 self.time_of_last_call = datetime.datetime.min
53 53
54 54 def __call__(self, fn):
55 55 @wraps(fn)
56 56 def wrapper(*args, **kwargs):
57 57 now = datetime.datetime.now()
58 58 time_since_last_call = now - self.time_of_last_call
59 59 time_left = self.throttle_period - time_since_last_call
60 60
61 61 if time_left > datetime.timedelta(seconds=0):
62 62 return
63 63
64 64 self.time_of_last_call = datetime.datetime.now()
65 65 return fn(*args, **kwargs)
66 66
67 67 return wrapper
68 68
69 69
70 70 class PublishData(Operation):
71 71 """Clase publish."""
72 72
73 73 def __init__(self, **kwargs):
74 74 """Inicio."""
75 75 Operation.__init__(self, **kwargs)
76 76 self.isConfig = False
77 77 self.client = None
78 78 self.zeromq = None
79 79 self.mqtt = None
80 80
81 81 def on_disconnect(self, client, userdata, rc):
82 82 if rc != 0:
83 83 print("Unexpected disconnection.")
84 84 self.connect()
85 85
86 86 def connect(self):
87 87 print 'trying to connect'
88 88 try:
89 89 self.client.connect(
90 90 host=self.host,
91 91 port=self.port,
92 92 keepalive=60*10,
93 93 bind_address='')
94 94 self.client.loop_start()
95 95 # self.client.publish(
96 96 # self.topic + 'SETUP',
97 97 # json.dumps(setup),
98 98 # retain=True
99 99 # )
100 100 except:
101 101 print "MQTT Conection error."
102 102 self.client = False
103 103
104 104 def setup(self, port=1883, username=None, password=None, clientId="user", zeromq=1, **kwargs):
105 105 self.counter = 0
106 106 self.topic = kwargs.get('topic', 'schain')
107 107 self.delay = kwargs.get('delay', 0)
108 108 self.plottype = kwargs.get('plottype', 'spectra')
109 109 self.host = kwargs.get('host', "10.10.10.82")
110 110 self.port = kwargs.get('port', 3000)
111 111 self.clientId = clientId
112 112 self.cnt = 0
113 113 self.zeromq = zeromq
114 114 self.mqtt = kwargs.get('plottype', 0)
115 115 self.client = None
116 116 setup = []
117 117 if mqtt is 1:
118 118 self.client = mqtt.Client(
119 119 client_id=self.clientId + self.topic + 'SCHAIN',
120 120 clean_session=True)
121 121 self.client.on_disconnect = self.on_disconnect
122 122 self.connect()
123 123 for plot in self.plottype:
124 124 setup.append({
125 125 'plot': plot,
126 126 'topic': self.topic + plot,
127 127 'title': getattr(self, plot + '_' + 'title', False),
128 128 'xlabel': getattr(self, plot + '_' + 'xlabel', False),
129 129 'ylabel': getattr(self, plot + '_' + 'ylabel', False),
130 130 'xrange': getattr(self, plot + '_' + 'xrange', False),
131 131 'yrange': getattr(self, plot + '_' + 'yrange', False),
132 132 'zrange': getattr(self, plot + '_' + 'zrange', False),
133 133 })
134 134 if zeromq is 1:
135 135 context = zmq.Context()
136 136 self.zmq_socket = context.socket(zmq.PUSH)
137 137 server = kwargs.get('server', 'zmq.pipe')
138 138
139 139 if 'tcp://' in server:
140 140 address = server
141 141 else:
142 142 address = 'ipc:///tmp/%s' % server
143 143
144 144 self.zmq_socket.connect(address)
145 145 time.sleep(1)
146 146
147 147
148
148 149 def publish_data(self):
149 150 self.dataOut.finished = False
150 151 if self.mqtt is 1:
151 152 yData = self.dataOut.heightList[:2].tolist()
152 153 if self.plottype == 'spectra':
153 154 data = getattr(self.dataOut, 'data_spc')
154 155 z = data/self.dataOut.normFactor
155 156 zdB = 10*numpy.log10(z)
156 157 xlen, ylen = zdB[0].shape
157 158 dx = int(xlen/MAXNUMX) + 1
158 159 dy = int(ylen/MAXNUMY) + 1
159 160 Z = [0 for i in self.dataOut.channelList]
160 161 for i in self.dataOut.channelList:
161 162 Z[i] = zdB[i][::dx, ::dy].tolist()
162 163 payload = {
163 164 'timestamp': self.dataOut.utctime,
164 165 'data': roundFloats(Z),
165 166 'channels': ['Ch %s' % ch for ch in self.dataOut.channelList],
166 167 'interval': self.dataOut.getTimeInterval(),
167 168 'type': self.plottype,
168 169 'yData': yData
169 170 }
170 171 # print payload
171 172
172 173 elif self.plottype in ('rti', 'power'):
173 174 data = getattr(self.dataOut, 'data_spc')
174 175 z = data/self.dataOut.normFactor
175 176 avg = numpy.average(z, axis=1)
176 177 avgdB = 10*numpy.log10(avg)
177 178 xlen, ylen = z[0].shape
178 179 dy = numpy.floor(ylen/self.__MAXNUMY) + 1
179 180 AVG = [0 for i in self.dataOut.channelList]
180 181 for i in self.dataOut.channelList:
181 182 AVG[i] = avgdB[i][::dy].tolist()
182 183 payload = {
183 184 'timestamp': self.dataOut.utctime,
184 185 'data': roundFloats(AVG),
185 186 'channels': ['Ch %s' % ch for ch in self.dataOut.channelList],
186 187 'interval': self.dataOut.getTimeInterval(),
187 188 'type': self.plottype,
188 189 'yData': yData
189 190 }
190 191 elif self.plottype == 'noise':
191 192 noise = self.dataOut.getNoise()/self.dataOut.normFactor
192 193 noisedB = 10*numpy.log10(noise)
193 194 payload = {
194 195 'timestamp': self.dataOut.utctime,
195 196 'data': roundFloats(noisedB.reshape(-1, 1).tolist()),
196 197 'channels': ['Ch %s' % ch for ch in self.dataOut.channelList],
197 198 'interval': self.dataOut.getTimeInterval(),
198 199 'type': self.plottype,
199 200 'yData': yData
200 201 }
201 202 elif self.plottype == 'snr':
202 203 data = getattr(self.dataOut, 'data_SNR')
203 204 avgdB = 10*numpy.log10(data)
204 205
205 206 ylen = data[0].size
206 207 dy = numpy.floor(ylen/self.__MAXNUMY) + 1
207 208 AVG = [0 for i in self.dataOut.channelList]
208 209 for i in self.dataOut.channelList:
209 210 AVG[i] = avgdB[i][::dy].tolist()
210 211 payload = {
211 212 'timestamp': self.dataOut.utctime,
212 213 'data': roundFloats(AVG),
213 214 'channels': ['Ch %s' % ch for ch in self.dataOut.channelList],
214 215 'type': self.plottype,
215 216 'yData': yData
216 217 }
217 218 else:
218 219 print "Tipo de grafico invalido"
219 220 payload = {
220 221 'data': 'None',
221 222 'timestamp': 'None',
222 223 'type': None
223 224 }
224 225 # print 'Publishing data to {}'.format(self.host)
225 226 self.client.publish(self.topic + self.plottype, json.dumps(payload), qos=0)
226 227
227 228 if self.zeromq is 1:
228 229 print '[Sending] {} - {}'.format(self.dataOut.type, self.dataOut.datatime)
229 230 self.zmq_socket.send_pyobj(self.dataOut)
230 231
231 232 def run(self, dataOut, **kwargs):
232 233 self.dataOut = dataOut
233 234 if not self.isConfig:
234 235 self.setup(**kwargs)
235 236 self.isConfig = True
236 237
237 238 self.publish_data()
238 239 time.sleep(self.delay)
239 240
240 241 def close(self):
241 242 if self.zeromq is 1:
242 243 self.dataOut.finished = True
243 244 self.zmq_socket.send_pyobj(self.dataOut)
244 245
245 246 if self.client:
246 247 self.client.loop_stop()
247 248 self.client.disconnect()
248 249
249 250
250 251 class ReceiverData(ProcessingUnit, Process):
251 252
252 253 throttle_value = 5
253 254
254 255 def __init__(self, **kwargs):
255 256
256 257 ProcessingUnit.__init__(self, **kwargs)
257 258 Process.__init__(self)
258 259 self.mp = False
259 260 self.isConfig = False
260 261 self.plottypes =[]
261 262 self.connections = 0
262 263 server = kwargs.get('server', 'zmq.pipe')
263 264 if 'tcp://' in server:
264 265 address = server
265 266 else:
266 267 address = 'ipc:///tmp/%s' % server
267 268
268 269 self.address = address
269 270 self.plottypes = [s.strip() for s in kwargs.get('plottypes', 'rti').split(',')]
270 271 self.realtime = kwargs.get('realtime', False)
271 272 self.throttle_value = kwargs.get('throttle', 10)
272 273 self.sendData = self.initThrottle(self.throttle_value)
273 274 self.setup()
274 275
275 276 def setup(self):
276 277
277 278 self.data = {}
278 279 self.data['times'] = []
279 280 for plottype in self.plottypes:
280 281 self.data[plottype] = {}
281 282 self.data['noise'] = {}
282 283 self.data['throttle'] = self.throttle_value
283 284 self.data['ENDED'] = False
284 285 self.isConfig = True
285 286
286 287 def event_monitor(self, monitor):
287 288
288 289 events = {}
289 290
290 291 for name in dir(zmq):
291 292 if name.startswith('EVENT_'):
292 293 value = getattr(zmq, name)
293 294 events[value] = name
294 295
295 296 while monitor.poll():
296 297 evt = recv_monitor_message(monitor)
297 298 if evt['event'] == 32:
298 299 self.connections += 1
299 300 if evt['event'] == 512:
300 301 pass
301 302 if self.connections == 0 and self.started is True:
302 303 self.ended = True
303 304 # send('ENDED')
304 305 evt.update({'description': events[evt['event']]})
305 306
306 307 if evt['event'] == zmq.EVENT_MONITOR_STOPPED:
307 308 break
308 309 monitor.close()
310 print("event monitor thread done!")
309 311
310 312 def initThrottle(self, throttle_value):
311 313
312 314 @throttle(seconds=throttle_value)
313 315 def sendDataThrottled(fn_sender, data):
314 316 fn_sender(data)
315 317
316 318 return sendDataThrottled
317 319
318 320 def send(self, data):
319 321 print '[sending] data=%s size=%s' % (data.keys(), len(data['times']))
320 322 self.sender.send_pyobj(data)
321 323
322 324 def update(self):
323 325
324 326 t = self.dataOut.ltctime
325 327 self.data['times'].append(t)
326 328 self.data['dataOut'] = self.dataOut
327
328 329 for plottype in self.plottypes:
329 330
330 331 if plottype == 'spc':
331 332 z = self.dataOut.data_spc/self.dataOut.normFactor
332 333 self.data[plottype] = 10*numpy.log10(z)
333 334 self.data['noise'][t] = 10*numpy.log10(self.dataOut.getNoise()/self.dataOut.normFactor)
334 335 if plottype == 'rti':
335 336 self.data[plottype][t] = self.dataOut.getPower()
336 337 if plottype == 'snr':
337 338 self.data[plottype][t] = 10*numpy.log10(self.dataOut.data_SNR)
338 339 if plottype == 'dop':
339 340 self.data[plottype][t] = 10*numpy.log10(self.dataOut.data_DOP)
340 341 if plottype == 'coh':
341 342 self.data[plottype][t] = self.dataOut.getCoherence()
342 343 if plottype == 'phase':
343 344 self.data[plottype][t] = self.dataOut.getCoherence(phase=True)
344 345
345 346 def run(self):
346 347
347 348 print '[Starting] {} from {}'.format(self.name, self.address)
348 349
349 350 self.context = zmq.Context()
350 351 self.receiver = self.context.socket(zmq.PULL)
351 352 self.receiver.bind(self.address)
352 353 monitor = self.receiver.get_monitor_socket()
353 354 self.sender = self.context.socket(zmq.PUB)
354 355
355 356 self.sender.bind("ipc:///tmp/zmq.plots")
356 357
357 358 t = Thread(target=self.event_monitor, args=(monitor,))
358 359 t.start()
359 360
360 361 while True:
361 362 self.dataOut = self.receiver.recv_pyobj()
362 363 # print '[Receiving] {} - {}'.format(self.dataOut.type,
363 364 # self.dataOut.datatime.ctime())
364 365
365 366 self.update()
366 367
367 368 if self.dataOut.finished is True:
368 369 self.send(self.data)
369 370 self.connections -= 1
370 371 if self.connections == 0 and self.started:
371 372 self.ended = True
372 373 self.data['ENDED'] = True
373 374 self.send(self.data)
374 375 self.setup()
375 376 else:
376 377 if self.realtime:
377 378 self.send(self.data)
378 379 else:
379 380 self.sendData(self.send, self.data)
380 381 self.started = True
381 382
382 383 return
@@ -1,87 +1,86
1 1 import argparse
2 2
3 3 from schainpy.controller import Project, multiSchain
4 4
5 5 desc = "HF_EXAMPLE"
6 6
7 7 def fiber(cursor, skip, q, dt):
8 8
9 9 controllerObj = Project()
10 10
11 11 controllerObj.setup(id='191', name='test01', description=desc)
12 12
13 13 readUnitConfObj = controllerObj.addReadUnit(datatype='SpectraReader',
14 14 path='/home/nanosat/data/hysell_data20/pdata',
15 15 startDate=dt,
16 16 endDate=dt,
17 17 startTime="00:00:00",
18 18 endTime="23:59:59",
19 19 online=0,
20 20 #set=1426485881,
21 21 delay=10,
22 22 walk=1,
23 23 queue=q,
24 24 cursor=cursor,
25 25 skip=skip,
26 26 #timezone=-5*3600
27 27 )
28 28
29 29 # #opObj11 = readUnitConfObj.addOperation(name='printNumberOfBlock')
30 30 #
31 31 procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=readUnitConfObj.getId())
32 32 # opObj11 = procUnitConfObj2.addParameter(name='pairsList', value='(0,1)', format='pairslist')
33 33 #
34 procUnitConfObj3 = controllerObj.addProcUnit(datatype='ParametersProc', inputId=readUnitConfObj.getId())
35
36 opObj11 = procUnitConfObj3.addOperation(name='SpectralMoments', optype='other')
34 # procUnitConfObj3 = controllerObj.addProcUnit(datatype='ParametersProc', inputId=readUnitConfObj.getId())
35 # opObj11 = procUnitConfObj3.addOperation(name='SpectralMoments', optype='other')
37 36
38 37 #
39 38 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other')
40 39 # opObj11.addParameter(name='id', value='1000', format='int')
41 40 # opObj11.addParameter(name='wintitle', value='HF_Jicamarca_Spc', format='str')
42 41 # opObj11.addParameter(name='channelList', value='0', format='intlist')
43 42 # opObj11.addParameter(name='zmin', value='-120', format='float')
44 43 # opObj11.addParameter(name='zmax', value='-70', format='float')
45 44 # opObj11.addParameter(name='save', value='1', format='int')
46 45 # opObj11.addParameter(name='figpath', value=figpath, format='str')
47 46
48 47 # opObj11 = procUnitConfObj2.addOperation(name='RTIPlot', optype='other')
49 48 # opObj11.addParameter(name='id', value='2000', format='int')
50 49 # opObj11.addParameter(name='wintitzmaxle', value='HF_Jicamarca', format='str')
51 50 # opObj11.addParameter(name='showprofile', value='0', format='int')
52 51 # # opObj11.addParameter(name='channelList', value='0', format='intlist')
53 52 # # opObj11.addParameter(name='xmin', value='0', format='float')
54 53 # opObj11.addParameter(name='xmin', value='0', format='float')
55 54 # opObj11.addParameter(name='xmax', value='24', format='float')
56 55
57 56 # opObj11.addParameter(name='zmin', value='-110', format='float')
58 57 # opObj11.addParameter(name='zmax', value='-70', format='float')
59 58 # opObj11.addParameter(name='save', value='0', format='int')
60 59 # # opObj11.addParameter(name='figpath', value='/tmp/', format='str')
61 60 #
62 61 opObj12 = procUnitConfObj2.addOperation(name='PublishData', optype='other')
63 62 opObj12.addParameter(name='zeromq', value=1, format='int')
64 63
65 opObj13 = procUnitConfObj3.addOperation(name='PublishData', optype='other')
66 opObj13.addParameter(name='zeromq', value=1, format='int')
67 opObj13.addParameter(name='server', value="juanca", format='str')
64 # opObj13 = procUnitConfObj3.addOperation(name='PublishData', optype='other')
65 # opObj13.addParameter(name='zeromq', value=1, format='int')
66 # opObj13.addParameter(name='server', value="juanca", format='str')
68 67
69 68 # opObj12.addParameter(name='delay', value=1, format='int')
70 69
71 70
72 71 # print "Escribiendo el archivo XML"
73 72 # controllerObj.writeXml(filename)
74 73 # print "Leyendo el archivo XML"
75 74 # controllerObj.readXml(filename)
76 75
77 76
78 77 # timeit.timeit('controllerObj.run()', number=2)
79 78
80 79 controllerObj.start()
81 80
82 81
83 82 if __name__ == '__main__':
84 83 parser = argparse.ArgumentParser(description='Set number of parallel processes')
85 parser.add_argument('--nProcess', default=16, type=int)
84 parser.add_argument('--nProcess', default=2, type=int)
86 85 args = parser.parse_args()
87 86 multiSchain(fiber, nProcess=args.nProcess, startDate='2015/09/26', endDate='2015/09/26')
@@ -1,49 +1,48
1 1 #!/usr/bin/env python
2 2 '''
3 3 Created on Jul 7, 2014
4 4
5 5 @author: roj-idl71
6 6 '''
7 7 import os, sys
8 8
9 9 from schainpy.controller import Project
10 10
11 11 if __name__ == '__main__':
12 12 desc = "Segundo Test"
13 13
14 14 controllerObj = Project()
15 15 controllerObj.setup(id='191', name='test01', description=desc)
16 16
17 17 proc1 = controllerObj.addProcUnit(name='ReceiverData')
18 18 proc1.addParameter(name='realtime', value='0', format='bool')
19 19 proc1.addParameter(name='plottypes', value='rti,coh,phase', format='str')
20 20 proc1.addParameter(name='throttle', value='10', format='int')
21 21
22 22 op1 = proc1.addOperation(name='PlotRTIData', optype='other')
23 23 op1.addParameter(name='wintitle', value='Julia 150Km', format='str')
24 24 op1.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
25 op1.addParameter(name='colormap', value='jet', format='str')
26 25
27 26 op2 = proc1.addOperation(name='PlotCOHData', optype='other')
28 27 op2.addParameter(name='wintitle', value='Julia 150Km', format='str')
29 28 op2.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
30
29 #
31 30 op6 = proc1.addOperation(name='PlotPHASEData', optype='other')
32 31 op6.addParameter(name='wintitle', value='Julia 150Km', format='str')
33 32 op6.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
34
35 proc2 = controllerObj.addProcUnit(name='ReceiverData')
36 proc2.addParameter(name='server', value='juanca', format='str')
37 proc2.addParameter(name='plottypes', value='snr,dop', format='str')
38
39 op3 = proc2.addOperation(name='PlotSNRData', optype='other')
40 op3.addParameter(name='wintitle', value='Julia 150Km', format='str')
41 op3.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
42
43 op4 = proc2.addOperation(name='PlotDOPData', optype='other')
44 op4.addParameter(name='wintitle', value='Julia 150Km', format='str')
45 op4.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
33 #
34 # proc2 = controllerObj.addProcUnit(name='ReceiverData')
35 # proc2.addParameter(name='server', value='juanca', format='str')
36 # proc2.addParameter(name='plottypes', value='snr,dop', format='str')
37 #
38 # op3 = proc2.addOperation(name='PlotSNRData', optype='other')
39 # op3.addParameter(name='wintitle', value='Julia 150Km', format='str')
40 # op3.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
41 #
42 # op4 = proc2.addOperation(name='PlotDOPData', optype='other')
43 # op4.addParameter(name='wintitle', value='Julia 150Km', format='str')
44 # op4.addParameter(name='save', value='/home/nanosat/Pictures', format='str')
46 45
47 46
48 47
49 48 controllerObj.start()
@@ -1,1 +1,1
1 <Project description="HF_EXAMPLE" id="191" name="test01"><ReadUnit datatype="SpectraReader" 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/hysell_data20/pdata" /><Parameter format="date" id="191113" name="startDate" value="2015/09/26" /><Parameter format="date" id="191114" name="endDate" value="2015/09/26" /><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="17" /><Parameter format="int" id="191119" name="skip" value="45" /><Parameter format="int" id="191120" name="delay" value="10" /><Parameter format="int" id="191121" name="walk" value="1" /><Parameter format="int" id="191122" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="ParametersProc" 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="str" id="191332" name="server" value="juanca" /></Operation></ProcUnit><ProcUnit datatype="Spectra" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self" /><Operation id="19122" name="PublishData" priority="2" type="other"><Parameter format="int" id="191221" name="zeromq" value="1" /></Operation></ProcUnit></Project> No newline at end of file
1 <Project description="HF_EXAMPLE" id="191" name="test01"><ReadUnit datatype="SpectraReader" 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/hysell_data20/pdata" /><Parameter format="date" id="191113" name="startDate" value="2015/09/26" /><Parameter format="date" id="191114" name="endDate" value="2015/09/26" /><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="3" /><Parameter format="int" id="191119" name="skip" value="360" /><Parameter format="int" id="191120" name="delay" value="10" /><Parameter format="int" id="191121" name="walk" value="1" /><Parameter format="int" id="191122" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="Spectra" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self" /><Operation id="19122" name="PublishData" priority="2" type="other"><Parameter format="int" id="191221" name="zeromq" value="1" /></Operation></ProcUnit></Project> No newline at end of file
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now