jroplotter.py
110 lines
| 2.5 KiB
| text/x-python
|
PythonLexer
|
r691 | ''' | |
Created on Jul 9, 2014 | |||
@author: roj-idl71 | |||
''' | |||
import os | |||
import datetime | |||
import numpy | |||
|
r698 | from time import sleep | |
from Queue import Queue | |||
from threading import Thread | |||
|
r691 | ||
|
r698 | from schainpy.model.proc.jroproc_base import Operation | |
from schainpy.model.serializer.data import obj2Dict, dict2Obj | |||
|
r701 | from jroplot_correlation import * | |
from jroplot_heispectra import * | |||
from jroplot_parameters import * | |||
from jroplot_spectra import * | |||
from jroplot_voltage import * | |||
|
r698 | ||
class Plotter(Operation): | |||
|
r691 | ||
isConfig = None | |||
name = None | |||
|
r698 | __queue = None | |
|
r691 | ||
def __init__(self, plotter_name, plotter_queue=None): | |||
|
r698 | Operation.__init__(self) | |
|
r691 | self.isConfig = False | |
self.name = plotter_name | |||
|
r698 | self.__queue = plotter_queue | |
|
r691 | ||
def getSubplots(self): | |||
nrow = self.nplots | |||
ncol = 1 | |||
return nrow, ncol | |||
def setup(self, **kwargs): | |||
print "Initializing ..." | |||
|
r698 | def run(self, dataOut, id=None, **kwargs): | |
|
r691 | ||
""" | |||
Input: | |||
dataOut : | |||
id : | |||
""" | |||
|
r698 | packDict = {} | |
packDict['id'] = id | |||
packDict['name'] = self.name | |||
packDict['kwargs'] = kwargs | |||
packDict['data'] = obj2Dict(dataOut) | |||
self.__queue.put(packDict) | |||
class PlotterManager(Thread): | |||
__stop = False | |||
def __init__(self, plotter_queue): | |||
Thread.__init__(self) | |||
|
r703 | self.setDaemon(True) | |
|
r698 | self.__queue = plotter_queue | |
self.plotInstanceDict = {} | |||
self.__stop = False | |||
def run(self): | |||
while True: | |||
if self.__stop: | |||
break | |||
if self.__queue.empty(): | |||
|
r703 | sleep(0.1) | |
|
r698 | continue | |
serial_data = self.__queue.get(True) | |||
plot_id = serial_data['id'] | |||
plot_name = serial_data['name'] | |||
kwargs = serial_data['kwargs'] | |||
dataDict = serial_data['data'] | |||
dataPlot = dict2Obj(dataDict) | |||
if plot_id not in self.plotInstanceDict.keys(): | |||
className = eval(plot_name) | |||
self.plotInstanceDict[plot_id] = className() | |||
plotter = self.plotInstanceDict[plot_id] | |||
plotter.run(dataPlot, plot_id, **kwargs) | |||
|
r691 | ||
|
r698 | def stop(self): | |
|
r691 | ||
|
r698 | self.__stop = True |