|
|
'''
|
|
|
Created on Feb 7, 2012
|
|
|
|
|
|
@author $Author$
|
|
|
@version $Id$
|
|
|
'''
|
|
|
import os, sys
|
|
|
import numpy
|
|
|
import plplot
|
|
|
|
|
|
path = os.path.split(os.getcwd())[0]
|
|
|
sys.path.append(path)
|
|
|
|
|
|
from Graphics.BaseGraph import *
|
|
|
from Model.Voltage import Voltage
|
|
|
|
|
|
class Osciloscope():
|
|
|
|
|
|
def __init__(self, Voltage):
|
|
|
|
|
|
"""
|
|
|
|
|
|
Inputs:
|
|
|
|
|
|
type: "power" ->> Potencia
|
|
|
"iq" ->> Real + Imaginario
|
|
|
"""
|
|
|
|
|
|
self.__isPlotConfig = False
|
|
|
|
|
|
self.__isPlotIni = False
|
|
|
|
|
|
self.__xrange = None
|
|
|
|
|
|
self.__yrange = None
|
|
|
|
|
|
self.m_Voltage = None
|
|
|
|
|
|
self.nGraphs = 0
|
|
|
|
|
|
self.graphObjList = []
|
|
|
|
|
|
self.m_Voltage = Voltage
|
|
|
|
|
|
|
|
|
def __addGraph(self, subpage, title="", xlabel="", ylabel="", XAxisAsTime=False):
|
|
|
|
|
|
graphObj = LinearPlot()
|
|
|
graphObj.setup(subpage, title="", xlabel="", ylabel="", XAxisAsTime=False)
|
|
|
#graphObj.setScreenPos()
|
|
|
|
|
|
self.graphObjList.append(graphObj)
|
|
|
|
|
|
del graphObj
|
|
|
|
|
|
# def setXRange(self, xmin, xmax):
|
|
|
# self.__xrange = (xmin, xmax)
|
|
|
#
|
|
|
# def setYRange(self, ymin, ymax):
|
|
|
# self.__yrange = (ymin, ymax)
|
|
|
|
|
|
|
|
|
def setup(self, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False):
|
|
|
|
|
|
nChan = int(self.m_Voltage.m_SystemHeader.numChannels)
|
|
|
|
|
|
myTitle = ""
|
|
|
myXlabel = ""
|
|
|
myYlabel = ""
|
|
|
|
|
|
for i in range(nChan):
|
|
|
if titleList != None:
|
|
|
myTitle = titleList[i]
|
|
|
myXlabel = xlabelList[i]
|
|
|
myYlabel = ylabelList[i]
|
|
|
|
|
|
self.__addGraph(i+1, title=myTitle, xlabel=myXlabel, ylabel=myYlabel, XAxisAsTime=XAxisAsTime)
|
|
|
|
|
|
self.nGraphs = nChan
|
|
|
self.__isPlotConfig = True
|
|
|
|
|
|
def iniPlot(self):
|
|
|
plplot.plsetopt("geometry", "%dx%d" %(700, 115*self.nGraphs))
|
|
|
plplot.plsdev("xcairo")
|
|
|
plplot.plscolbg(255,255,255)
|
|
|
plplot.plscol0(1,0,0,0)
|
|
|
plplot.plinit()
|
|
|
plplot.plspause(False)
|
|
|
plplot.plssub(1, self.nGraphs)
|
|
|
|
|
|
self.__isPlotIni = True
|
|
|
|
|
|
def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, idProfile=None, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False, type='iq'):
|
|
|
|
|
|
if idProfile != None and idProfile != self.m_Voltage.idProfile:
|
|
|
return
|
|
|
|
|
|
if not(self.__isPlotConfig):
|
|
|
self.setup(titleList, xlabelList, ylabelList, XAxisAsTime)
|
|
|
|
|
|
if not(self.__isPlotIni):
|
|
|
self.iniPlot()
|
|
|
|
|
|
data = self.m_Voltage.data
|
|
|
|
|
|
x = self.m_Voltage.heights
|
|
|
|
|
|
if xmin == None: xmin = x[0]
|
|
|
if xmax == None: xmax = x[-1]
|
|
|
if ymin == None: ymin = numpy.nanmin(abs(data))
|
|
|
if ymax == None: ymax = numpy.nanmax(abs(data))
|
|
|
|
|
|
plplot.plbop()
|
|
|
for i in range(self.nGraphs):
|
|
|
y = data[:,i]
|
|
|
|
|
|
self.graphObjList[i].iniSubpage()
|
|
|
self.graphObjList[i].plotComplexData(x, y, xmin, xmax, ymin, ymax, 8, type)
|
|
|
|
|
|
plplot.plflush()
|
|
|
plplot.pleop()
|
|
|
|
|
|
def end(self):
|
|
|
plplot.plend()
|
|
|
|
|
|
class VoltagePlot(object):
|
|
|
'''
|
|
|
classdocs
|
|
|
'''
|
|
|
|
|
|
__m_Voltage = None
|
|
|
|
|
|
def __init__(self, m_Voltage):
|
|
|
'''
|
|
|
Constructor
|
|
|
'''
|
|
|
self.__m_Voltage = m_Voltage
|
|
|
|
|
|
def setup(self):
|
|
|
pass
|
|
|
|
|
|
def addGraph(self, type, xrange=None, yrange=None, zrange=None):
|
|
|
pass
|
|
|
|
|
|
def plotData(self):
|
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
import numpy
|
|
|
|
|
|
plplot.plsetopt("geometry", "%dx%d" %(450*2, 200*2))
|
|
|
plplot.plsdev("xcairo")
|
|
|
plplot.plscolbg(255,255,255)
|
|
|
plplot.plscol0(1,0,0,0)
|
|
|
plplot.plinit()
|
|
|
plplot.plssub(1, 2)
|
|
|
|
|
|
nx = 64
|
|
|
ny = 100
|
|
|
|
|
|
data = numpy.random.uniform(-50,50,(nx,ny))
|
|
|
|
|
|
baseObj = RTI()
|
|
|
baseObj.setup(1, "Spectrum", "Frequency", "Range", "br_green", False, False)
|
|
|
baseObj.plotData(data)
|
|
|
|
|
|
data = numpy.random.uniform(-50,50,(nx,ny))
|
|
|
|
|
|
base2Obj = RTI()
|
|
|
base2Obj.setup(2, "Spectrum", "Frequency", "Range", "br_green", True, True)
|
|
|
base2Obj.plotData(data)
|
|
|
|
|
|
plplot.plend()
|
|
|
exit(0)
|