From a6c4caf9dc4c91e5bf06ac0240dcaefbd051a233 2015-10-01 17:41:35 From: Miguel Valdez Date: 2015-10-01 17:41:35 Subject: [PATCH] ControllerThread was eliminated from controller.py and it was added to controller_api.py --- diff --git a/schainpy/controller.py b/schainpy/controller.py index cee27a2..cd53972 100644 --- a/schainpy/controller.py +++ b/schainpy/controller.py @@ -6,7 +6,6 @@ from xml.etree.ElementTree import Element, SubElement from xml.etree import ElementTree as ET from xml.dom import minidom -#import datetime from model import * try: @@ -888,9 +887,6 @@ class Project(): projectElement.set('id', str(self.id)) projectElement.set('name', self.name) projectElement.set('description', self.description) - -# for readUnitConfObj in self.readUnitConfObjList: -# readUnitConfObj.makeXml(projectElement) for procUnitConfObj in self.procUnitConfObjDict.values(): procUnitConfObj.makeXml(projectElement) @@ -907,9 +903,7 @@ class Project(): def readXml(self, filename): - #tree = ET.parse(filename) self.projectElement = None -# self.readUnitConfObjList = [] self.procUnitConfObjDict = {} self.projectElement = ElementTree().parse(filename) @@ -948,17 +942,11 @@ class Project(): self.name, self.description) -# for readUnitConfObj in self.readUnitConfObjList: -# readUnitConfObj.printattr() - for procUnitConfObj in self.procUnitConfObjDict.values(): procUnitConfObj.printattr() def createObjects(self): -# for readUnitConfObj in self.readUnitConfObjList: -# readUnitConfObj.createObjects() - for procUnitConfObj in self.procUnitConfObjDict.values(): procUnitConfObj.createObjects() @@ -986,8 +974,6 @@ class Project(): def run(self): -# for readUnitConfObj in self.readUnitConfObjList: -# readUnitConfObj.run() print print "*"*40 print " Starting SIGNAL CHAIN PROCESSING " @@ -1027,7 +1013,7 @@ class Project(): print "Process reinitialized" if self.control['stop']: - print "Process stopped" +# print "Process stopped" break #Closing every process @@ -1045,33 +1031,6 @@ class Project(): self.createObjects() self.connectObjects() self.run() - -class ControllerThread(threading.Thread, Project): - - def __init__(self, filename): - - threading.Thread.__init__(self) - Project.__init__(self) - - self.setDaemon(True) - - self.filename = filename - self.control = {'stop':False, 'pause':False} - - def stop(self): - self.control['stop'] = True - - def pause(self): - self.control['pause'] = not(self.control['pause']) - - def run(self): - self.control['stop'] = False - self.control['pause'] = False - - self.readXml(self.filename) - self.createObjects() - self.connectObjects() - Project.run(self) if __name__ == '__main__': @@ -1091,8 +1050,6 @@ if __name__ == '__main__': online=1, walk=1) -# opObj00 = readUnitConfObj.addOperation(name='printInfo') - procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId()) opObj10 = procUnitConfObj0.addOperation(name='selectChannels') @@ -1116,84 +1073,7 @@ if __name__ == '__main__': opObj11.addParameter(name='zmin', value='40', format='int') opObj11.addParameter(name='zmax', value='90', format='int') opObj11.addParameter(name='showprofile', value='1', format='int') - -# opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='2', format='int') -# opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str') -# opObj11.addParameter(name='zmin', value='40', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') - - -# procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId()) -# -# opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external') -# opObj12.addParameter(name='n', value='2', format='int') -# opObj12.addParameter(name='overlapping', value='1', format='int') -# -# procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId()) -# procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int') -# -# opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='2', format='int') -# opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str') -# opObj11.addParameter(name='zmin', value='40', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') -# opObj11.addParameter(name='showprofile', value='1', format='int') - -# opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='10', format='int') -# opObj11.addParameter(name='wintitle', value='RTI', format='str') -## opObj11.addParameter(name='xmin', value='21', format='float') -## opObj11.addParameter(name='xmax', value='22', format='float') -# opObj11.addParameter(name='zmin', value='40', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') -# opObj11.addParameter(name='showprofile', value='1', format='int') -# opObj11.addParameter(name='timerange', value=str(60), format='int') - -# opObj10 = procUnitConfObj1.addOperation(name='selectChannels') -# opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist') -# -# opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external') -# opObj12.addParameter(name='n', value='2', format='int') -# -# opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='2', format='int') -# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str') -# opObj11.addParameter(name='zmin', value='70', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') -# -# opObj10 = procUnitConfObj1.addOperation(name='selectChannels') -# opObj10.addParameter(name='channelList', value='2,6', format='intlist') -# -# opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external') -# opObj12.addParameter(name='n', value='2', format='int') -# -# opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='3', format='int') -# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str') -# opObj11.addParameter(name='zmin', value='70', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') - - -# opObj12 = procUnitConfObj1.addOperation(name='decoder') -# opObj12.addParameter(name='ncode', value='2', format='int') -# opObj12.addParameter(name='nbauds', value='8', format='int') -# opObj12.addParameter(name='code0', value='001110011', format='int') -# opObj12.addParameter(name='code1', value='001110011', format='int') - - - -# procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId()) -# -# opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external') -# opObj21.addParameter(name='n', value='2', format='int') -# -# opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external') -# opObj11.addParameter(name='idfigure', value='4', format='int') -# opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str') -# opObj11.addParameter(name='zmin', value='70', format='int') -# opObj11.addParameter(name='zmax', value='90', format='int') - + print "Escribiendo el archivo XML" controllerObj.writeXml(filename) diff --git a/schainpy/controller_api.py b/schainpy/controller_api.py new file mode 100644 index 0000000..3ce718d --- /dev/null +++ b/schainpy/controller_api.py @@ -0,0 +1,137 @@ +import threading + +from PyQt4 import QtCore +from PyQt4.QtCore import SIGNAL + +from schainpy.controller import Project + +class ControllerThread(threading.Thread, Project): + + def __init__(self, filename): + + threading.Thread.__init__(self) + Project.__init__(self) + + self.setDaemon(True) + + self.filename = filename + self.control = {'stop':False, 'pause':False} + + def __del__(self): + + self.control['stop'] = True +# self.pause(1) +# self.wait() + + def stop(self): + self.control['stop'] = True + + def pause(self): + self.control['pause'] = not(self.control['pause']) + + def __run(self): + + print + print "*"*40 + print " Starting SIGNAL CHAIN PROCESSING " + print "*"*40 + print + + keyList = self.procUnitConfObjDict.keys() + keyList.sort() + + while(True): + + finalSts = False + #executed proc units + procUnitExecutedList = [] + + for procKey in keyList: +# print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id) + + procUnitConfObj = self.procUnitConfObjDict[procKey] + + inputId = procUnitConfObj.getInputId() + + sts = procUnitConfObj.run() + finalSts = finalSts or sts + + procUnitExecutedList.append(procUnitConfObj.id) + + #If every process unit finished so end process + if not(finalSts): + print "Every process unit have finished" + break + + if self.control['pause']: + print "Process suspended" + + while True: + sleep(0.1) + + if not self.control['pause']: + break + + if self.control['stop']: + break + print "Process reinitialized" + + if self.control['stop']: +# print "Process stopped" + break + + #Closing every process + for procKey in keyList: + procUnitConfObj = self.procUnitConfObjDict[procKey] + procUnitConfObj.close() + + print "Process finished" + + def run(self): + self.control['stop'] = False + self.control['pause'] = False + + self.readXml(self.filename) + self.createObjects() + self.connectObjects() + Project.run(self) + + def isRunning(self): + + return self.is_alive() + + def isFinished(self): + + return not self.is_alive() + +class ControllerQThread(QtCore.QThread, Project): + + def __init__(self, filename): + + QtCore.QThread.__init__(self) + Project.__init__(self) + + self.filename = filename + self.control = {'stop':False, 'pause':False} + + def __del__(self): + + self.control['stop'] = True + self.wait() + + def stop(self): + self.control['stop'] = True + + def pause(self): + self.control['pause'] = not(self.control['pause']) + + def run(self): + self.control['stop'] = False + self.control['pause'] = False + + self.readXml(self.filename) + self.createObjects() + self.connectObjects() + self.emit( SIGNAL( "jobStarted( PyQt_PyObject )" ), 1) + Project.run(self) + self.emit( SIGNAL( "jobFinished( PyQt_PyObject )" ), 1) \ No newline at end of file