##// END OF EJS Templates
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos
Cambios para la lectura en modo online, ahora en la lectura se filtra por el dia actual, es decir si el folder contiene varios dias, solo leera los folders de la fecha en que nos encontramos

File last commit:

r589:341989823444
r598:1b565bb36c44
Show More
comm.py
124 lines | 3.5 KiB | text/x-python | PythonLexer
Miguel Valdez
r577 import threading
import Queue
Miguel Valdez
Signal Chain GUI updated:...
r587 try:
from gevent import sleep
except:
from time import sleep
Miguel Valdez
r577
from schainpy.controller import Project
from command import *
class ControllerThread(threading.Thread):
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589
Miguel Valdez
Signal Chain GUI updated:...
r580 def __init__(self, filename, data_q=None):
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589
Miguel Valdez
r577 super(ControllerThread, self).__init__()
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.setDaemon(True)
Miguel Valdez
r577 self.filename = filename
self.data_q = data_q
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.controllerObj = Project(self.control, self.data_q)
self.controllerObj.readXml(self.filename)
self.controllerObj.createObjects()
self.controllerObj.connectObjects()
self.controllerObj.run()
class CommCtrlProcessThread(threading.Thread):
""" Implements the threading.Thread interface (start, join, etc.) and
can be controlled via the cmd_q Queue attribute. Replies are placed in
the reply_q Queue attribute.
"""
def __init__(self, cmd_q=Queue.Queue(), reply_q=Queue.Queue()):
super(CommCtrlProcessThread, self).__init__()
self.cmd_q = cmd_q
Miguel Valdez
Signal Chain GUI updated:...
r580 # self.reply_q = reply_q
Miguel Valdez
r577
# self.print_q = Queue.Queue()
Miguel Valdez
Signal Chain GUI updated:...
r580 # self.data_q = Queue.Queue()
Miguel Valdez
r577
self.alive = threading.Event()
Miguel Valdez
Signal Chain GUI updated:...
r580 self.setDaemon(True)
Miguel Valdez
r577 self.alive.set()
self.socket = None
self.socketIO = None
self.mySocket = None
Miguel Valdez
Signal Chain GUI updated:...
r587 self.controllerObj = None
Miguel Valdez
r577
self.handlers = {
ProcessCommand.PROCESS: self._handle_ioPROCESSTHREAD,
ProcessCommand.MESSAGE: self._handle_ioMESSAGE,
ProcessCommand.DATA: self._handle_ioDATA,
ProcessCommand.STOP: self._handle_ioSTOP,
ProcessCommand.PAUSE: self._handle_ioPAUSE
}
def run(self):
Miguel Valdez
Signal Chain GUI updated:...
r580
Miguel Valdez
r577 while self.alive.isSet():
try:
cmd = self.cmd_q.get(True, 0.1)
self.handlers[cmd.type](cmd)
except Queue.Empty as e:
continue
Miguel Valdez
Signal Chain GUI updated:...
r587 def isRunning(self):
if self.controllerObj == None:
return False
if self.controllerObj.isAlive():
return True
return False
Miguel Valdez
r577 def _handle_ioPROCESSTHREAD(self, cmd):
filename = cmd.data
Miguel Valdez
Signal Chain GUI updated:...
r580 self.controllerObj = ControllerThread(filename=filename)
Miguel Valdez
r577 self.controllerObj.start()
def _handle_ioPAUSE(self, cmd):
self.controllerObj.pause()
def _handle_ioSTOP(self, cmd):
self.controllerObj.stop()
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589
while self.controllerObj.isAlive():
self.console.clear()
self.console.append("Close graphics before continue...")
sleep(0.1)
Miguel Valdez
Signal Chain GUI updated:...
r587 self.controllerObj.join()
# print "Process thread finished"
Miguel Valdez
r577
def _handle_ioDATA(self, cmd):
self.reply_q.put(self._success_reply_data(data=cmd.data))
def _handle_ioMESSAGE(self, cmd):
self.reply_q.put(self._success_reply_message(data=cmd.data))
def _success_reply_data(self, data=None):
return ClientReply(ClientReply.DATA, data)
def _success_reply_message(self, data=None):
return ClientReply(ClientReply.MESSAGE, data)
def join(self, timeout=None):
self.alive.clear()
threading.Thread.join(self, timeout)