123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- '''--------------------------------------------------------------------------------------------------
- Das Model steuert stellt die Modi unabhaengigen Funktionen bereit
- '''
-
- from subprocess import *
- from threading import Thread
- import time
-
- class Modell(Thread):
-
- def __init__(self,c, dll):
- Thread.__init__(self)
- self.controller = c
- self.dll = dll
- self.aktiv= True
-
- def setFunktion(self, func, args=None, kwargs=None):
- pass
-
- def startCopySpelling(self):
- pass
-
- def trainXDawn(self):
- pass
-
- def trainClassifier(self):
- pass
-
- def freeSpelling(self):
- pass
-
- def stop(self):
- '''--------------------------------------------------------------------------------------------------
- Die Funktion stop stopt den ablaufenden Thread
- '''
- print("stop thread")
- self.aktiv = False
-
- def run(self):
- '''--------------------------------------------------------------------------------------------------
- Wird bei Thread.start() aus dem Controller aufgerufen und laeuft ab sobald der Thread destartet wurde
- '''
- print("start thread")
- #self.aktiv = True
- t = Thread(target=self.startAquisitionServer)
- t.setDaemon(True)
- t.start()
-
- while self.aktiv:
- time.sleep(0.1)
-
- def killProzessParent(self):
- '''--------------------------------------------------------------------------------------------------
- schliesst OpenVibe-Designer
- '''
- print('Parent start killing')
- pidOV = 0
- items = []
-
- prozesse = Popen(["ps", "-e"], stdout=PIPE).communicate()[0].strip()
- zeilen = prozesse.split('\n')
- for z in zeilen:
- if(z.find("openvibe-design") != -1):
- z = z.strip()
- items = z.split(' ')
- pidOV = items[0]
- print(pidOV)
- if pidOV is not 0:
- #kill -TERM veranlasst dem Prozess sich selbst zu beenden (nicht erzwungen)
- try:
- Popen(["kill", "-TERM", str(pidOV)], stdout=PIPE).communicate()
- except:
- print("kein killing")
-
-
- print("killed openvibe-designer")
-
- def killAcquisitionServer(self):
- '''--------------------------------------------------------------------------------------------------
- schliesst den Acquisitionserver
- '''
-
- print('start killing AS')
- pid = 0
- items = []
-
- prozesse = Popen(["ps", "-e"], stdout=PIPE).communicate()[0].strip()
- zeilen = prozesse.split('\n')
- for z in zeilen:
- if(z.find("openvibe-acquis") != -1):
- z = z.strip()
- items = z.split(' ')
- pid = items[0]
-
- #kill -TERM veranlasst dem Prozess sich selbst zu beenden (nicht erzwungen)
- Popen(["kill", "-TERM", str(pid)], stdout=PIPE).communicate()
-
-
- print("killed openvibe-acquisitionserver")
-
-
-
- def startAquisitionServer(self):
- '''--------------------------------------------------------------------------------------------------
- startet den Acquisitionserver und steuert die Benutzerausgabe
- '''
-
- print("start Aquisitionserver")
- self.controller.resetInfo()
- self.controller.addInfoText('Aquisitionserver -- Bitte starten sie den Server\n')
-
- command = self.dll.getCommandStartAquisitionServer().split(" ")
- process = Popen(command, stdout=PIPE, universal_newlines=True)
-
- self.openVibeAktiv = True
- while True:
- output = process.stdout.readline()
- print(output.strip())
- x1 = output.find("Connection succeeded")
- x2 = output.find("Now acquiring")
- x3 = output.find("Stopping the acquisition")
- x4 = output.find("Disconnecting")
- init = output.find("Loading plugin: Fiddler")
- y = output.find("Error")
- if(x1 != -1):
- self.controller.addInfoText('Aquisitionserver ist verbunden -- Bitte starten Sie den Server\n')
- elif(x2 != -1 ):
- self.controller.resetInfo()
- self.controller.addInfoText("Aquisitionserver gestartet\n")
- self.minimizeWindow("server")
- elif(x3 != -1 ):
- self.controller.addInfoText("AquisitionServer gestoppt -- Bitte starten Sie den Server\n")
- self.positionWindow("server")
- elif(x4 != -1 ):
- self.controller.addInfoText("Verbindung vom Aquisitionserver getrennt!\n")
- self.positionWindow("server")
- elif(init != -1 ):
- time.sleep(1)
- self.positionWindow("server")
- elif(y != -1 ):
- self.controller.addInfoText("Fehler beim Auisitionserver aufgetaucht\n")
- if not self.aktiv:
- print("stop")
- break
-
- def positionWindow(self, name):
- '''--------------------------------------------------------------------------------------------------
- positioniert das Fenster auf der GUI
- '''
- print("calls positionWindow")
- parameter = self.controller.getWindowSize()
- positionX = int(parameter[0]+ int(parameter[3] * 0.05))
- positionY = int(parameter[1]) + int(parameter[2]*0.08)
- height = int(parameter[2])*0.55
- width = int(parameter[3])*0.9
- windowID = Popen(["xdotool", "search", "--onlyvisible", "--name", name], stdout=PIPE).communicate()[0].strip()
- try:
- print(int(windowID))
- Popen(["xdotool", "windowsize", windowID, str(width), str(height)], stdout=PIPE).communicate()
- Popen(["xdotool", "windowmove", windowID, str(positionX), str(positionY)], stdout=PIPE).communicate()
- Popen(["xdotool", "windowactivate", windowID], stdout=PIPE).communicate()[0].strip()
- except:
- print("no window")
- print(windowID)
- self.controller.addInfoText("Fehler: kein Fenster gefunden!")
-
- def minimizeWindow(self, name):
- '''--------------------------------------------------------------------------------------------------
- minimiert das Fenster
- '''
- windowID = Popen(["xdotool", "search", "--onlyvisible", "--name", name], stdout=PIPE).communicate()[0].strip()
- try:
- print(int(windowID))
- Popen(["xdotool", "windowminimize", windowID], stdout=PIPE).communicate()
- except:
- print("no window")
- print(windowID)
- self.controller.addInfoText("Fehler: kein Fenster gefunden!")
-
-
|