diff --git a/UIModell.py b/UIModell.py index 4727564..123275e 100644 --- a/UIModell.py +++ b/UIModell.py @@ -91,9 +91,9 @@ class Modell(Thread): 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() + if pid is not 0: + #kill -TERM veranlasst dem Prozess sich selbst zu beenden (nicht erzwungen) + Popen(["kill", "-TERM", str(pid)], stdout=PIPE).communicate() print("killed openvibe-acquisitionserver") diff --git a/UIModellTaktil.py b/UIModellTaktil.py index f1d0593..eea77bb 100644 --- a/UIModellTaktil.py +++ b/UIModellTaktil.py @@ -7,6 +7,7 @@ from subprocess import * from threading import Thread import time from UIModell import * +import re class ModellTaktil(Modell): @@ -62,7 +63,7 @@ class ModellTaktil(Modell): while True: output = process.stdout.readline() print(output.strip()) - x = output.find("schlagwort?") + x = output.find("Application terminated") y = output.find("Error") if(x != -1): print("Training finished") @@ -82,16 +83,18 @@ class ModellTaktil(Modell): break - self.controller.stop() + #self.controller.stop() def trainXDawn(self): '''-------------------------------------------------------------------------------------------------- Holt aus der shared Library die Befehle und startet das XDawnTraining. Reagiert auf Error oder die Ausgabe das das Training beendet wurde. Bei Beenden startet es das ClassifierTraining, bei Error wird der Vorgang gestoppt. ''' - print("start training Xdawn") + print("Start training Xdawn") self.controller.addInfoText('Starten des xDawn-Trainings -- ') - command = self.dll.getCommandXDawn_taktil().split(" ") + command = self.dll.getCommandXDawn_taktil() #.split(" ") + print("Command: " + command) + command = command.split(" ") process = Popen(command, stdout=PIPE, universal_newlines=True) self.openVibeAktiv = True @@ -117,7 +120,7 @@ class ModellTaktil(Modell): print("stop") break - self.controller.stop() + #self.controller.stop() #self.controller.filterClassic() @@ -134,19 +137,20 @@ class ModellTaktil(Modell): process = Popen(command, stdout=PIPE, universal_newlines=True) self.openVibeAktiv = True - counter = 0 + counter = 0 + acc = 0 while True: output = process.stdout.readline() print(output.strip()) x = output.find("aka Classifier trainer") - accuracy = output.find("Training set accuracy is") + accuracy = output.find("Cross-validation test accuracy is ") y = output.find("Error") if(x != -1): counter = counter +1 #counter = 18 if(counter >= 17): print("Training finished") - self.controller.addInfoText('Training beendet\n') + self.controller.addInfoText('Training beendet (' + acc + ')\n') process.terminate() self.controller.stop("save") break @@ -156,8 +160,18 @@ class ModellTaktil(Modell): self.controller.addInfoText("Fehler beim Classifier Training aufgetaucht\n") process.terminate() break - elif(accuracy != -1): - print("ACCURACY" + output) + if(accuracy != -1): + #print("Output:") + #print(output) + ansi_escape = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])') + test = output.encode("windows-1252").decode("utf-8") + i = len("Cross-validation test") + #print(output[accuracy:accuracy+i+12]) + #print(test[accuracy+i+12:accuracy+i+40].strip()) + acc_s = test[accuracy+i:accuracy+i+41].strip() + acc = ansi_escape.sub('', acc_s) + print(acc) + if not self.aktiv: print("stop") break @@ -180,7 +194,7 @@ class ModellTaktil(Modell): output = process.stdout.readline() print(output.strip()) y = output.find("Error") - x = output.find("Schlagwort") + x = output.find("Application terminated") if(x != -1): print("End Spelling") process.terminate() diff --git a/UIViewTKinter.py b/UIViewTKinter.py index 7fc0476..1eccfea 100644 --- a/UIViewTKinter.py +++ b/UIViewTKinter.py @@ -9,9 +9,11 @@ werden koennen try: from Tkinter import * #Fuer Python 2.7 import tkFileDialog as fd + print("python2.7") except ImportError: #Fuer Python >3 from tkinter import * from tkinter import filedialog as fd + print("python >3") from UIController import * @@ -29,8 +31,8 @@ class View(Tk): self.controller = c self.PATH_DEFAULT = path_default self.title("Visuelles Buchstabieren") - self.h = 1000 - self.w = 2000 + self.h = self.winfo_screenheight() + self.w = self.winfo_screenwidth() self.geometry('{}x{}'.format(self.w,self.h)) self.faktor = [(0.073),(0.727), (0.2)] #self.resizable(height=False, width= False) @@ -80,11 +82,11 @@ class View(Tk): Stoppt alle laufenden Threads und schliesst OpenVibe und den Aquisitionserver bevor sich das Fenster schliesst ''' - print("closing") - self.controller.commandStop() - self.controller.stopAcquisitionServer() - print("destroy") try: + print("closing") + self.controller.commandStop() + self.controller.stopAcquisitionServer() + print("destroy") self.dialog.destroy() except: pass