diff --git a/Software/COSI_Measure/cosi_gui_testbed.py b/Software/COSI_Measure/cosi_gui_testbed.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b1540eba0558dda65585bb386c9fa7d6bafb9a9
--- /dev/null
+++ b/Software/COSI_Measure/cosi_gui_testbed.py
@@ -0,0 +1,538 @@
+# import os
+
+# os.system('ifconfig eth0 192.168.101.253')
+# print('IP changed to 192.168.101.253')
+
+import sys
+from socket import *
+import time
+import atexit
+#import serial
+import binascii
+#import threading
+from PyQt4 import QtGui, QtCore
+from PyQt4.QtCore import Qt
+#import struct
+#from binascii import hexlify
+#from binascii import unhexlify
+sock = socket(AF_UNIX, SOCK_STREAM)
+BUFFER_SIZE = 256
+packet_size = 30
+#serPort = serial.Serial(
+#    port='/dev/ttyUSB0',
+#    baudrate=9600,
+#    parity=serial.PARITY_ODD,
+#    stopbits=serial.STOPBITS_ONE,
+#    bytesize=serial.SEVENBITS
+#)
+
+
+class Container(QtGui.QX11EmbedContainer):
+
+    def __init__(self):
+        QtGui.QX11EmbedContainer.__init__(self)
+
+    def sizeHint(self):
+        size = QtCore.QSize(400, 500)
+        return size.expandedTo(QtGui.QApplication.globalStrut())
+        
+class ExeMeasureThread(QtCore.QThread):
+
+    signalCom = QtCore.pyqtSignal(object)
+
+    def __init__(self, filename):
+        QtCore.QThread.__init__(self)
+        self.filename = filename
+
+    def run(self):
+        num_lines = sum(1 for line in open(self.filename))
+        fin_lines = 0.0
+        with open(self.filename) as coordinates:
+            for line in coordinates:
+                self.move_to(line)
+                self.wait_for_completion()
+                value = self.read_gaussmeter()
+                fin_lines += 1
+                self.signalCom.emit(((fin_lines/num_lines)*100, value))
+        
+    def wait_for_completion(self):
+        sock.send("check_status" + ("\0" * (packet_size-len("check_status"))))
+        msg = sock.recv(50)
+        #print msg
+        while msg == "busy":
+            sock.send("check_status" + ("\0" * (packet_size-len("check_status"))))
+            msg = sock.recv(50)
+            #print msg
+            time.sleep(0.1)
+
+    def move_to(self, coordinates):
+        G_CMD = "G0" + coordinates + "\n"
+        sock.send(G_CMD + ("\0" * (packet_size-len(G_CMD))))
+
+    def read_gaussmeter(self):
+        #serPort.write("ALLF?")
+        value = ''
+        time.sleep(0.2)
+        #while serPort.inWaiting() > 0:
+            #value += serPort.read(1)
+        #if value != '':
+        #    print ">>" + value
+        return value
+#class ExeMeasureThreadRemote(QtCore.QThread): Implement this if you have GUI-Remote connection problems
+                
+class Main(QtGui.QMainWindow):
+
+    def __init__(self):
+        super(Main, self).__init__()
+        self.initUI()
+	
+    def initUI(self):
+        self.frameSysIni = QtGui.QFrame()
+        self.frameSysIni.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameHoming = QtGui.QFrame()
+        self.frameHoming.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameMoving = QtGui.QFrame()
+        self.frameMoving.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameMeasure = QtGui.QFrame()
+        self.frameMeasure.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameConsole = QtGui.QFrame()
+        self.frameConsole.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.outputText = QtGui.QTextEdit()
+        #self.frameOutput = QtGui.QFrame()
+        #self.frameOutput.setFrameShape(QtGui.QFrame.StyledPanel)
+
+	##############Berk#####################
+	#self.bleAdapterConnect = QtGui.QFrame()
+	#self.bleAdapterConnect.setFrameShape(QtGui.QFrame.StyledPanel)
+	##############Berk#####################
+        self.splitterVLeft = QtGui.QSplitter(Qt.Vertical)
+        self.splitterVLeft.addWidget(self.frameSysIni)
+        self.splitterVLeft.addWidget(self.frameHoming)
+        self.splitterVLeft.addWidget(self.frameMoving)
+        self.splitterVLeft.addWidget(self.frameMeasure)
+        self.splitterVLeft.setSizes([200,150,150,300])
+        self.splitterVRight = QtGui.QSplitter(Qt.Vertical)
+        self.splitterVRight.addWidget(self.frameConsole)
+        #self.splitterVRight.addWidget(self.frameOutput)
+        self.splitterVRight.addWidget(self.outputText)
+        self.splitterVRight.setSizes([400,400])
+        self.splitterH = QtGui.QSplitter(Qt.Horizontal)
+        self.splitterH.addWidget(self.splitterVLeft)
+        self.splitterH.addWidget(self.splitterVRight)
+        self.splitterH.setSizes([500,500])
+        self.setCentralWidget(self.splitterH)
+        QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))
+
+        font11 = QtGui.QFont()
+        font11.setPointSize(11)
+        font11.setBold(True)
+        font11.setUnderline(True)
+        font11.setWeight(75)
+        font10 = QtGui.QFont()
+        font10.setPointSize(10)
+
+	
+        self.bleAdapterConnect = QtGui.QPushButton('Enable Connect')
+        self.bleAdapterConnect.setGeometry(QtCore.QRect(30, 80, 70, 30))
+        self.bleAdapterDConnect = QtGui.QPushButton('Connect external PC')
+        self.bleAdapterDConnect.setGeometry(QtCore.QRect(30, 80, 70, 30))
+        self.bleIniButton = QtGui.QPushButton('Init BLE Functions')
+        self.bleIniButton.setGeometry(QtCore.QRect(30, 80, 70, 30))
+
+        self.lableIni = QtGui.QLabel('System Initialization')
+        self.lableIni.setGeometry(QtCore.QRect(10, 10, 150, 20))
+        self.lableIni.setFont(font11)
+        self.lableStatusController = QtGui.QLabel('Movement controller')
+        self.lableStatusController.setGeometry(QtCore.QRect(310, 50, 20, 20))
+        self.lableStatusController.setFont(font10)
+        self.lableStatusSerial = QtGui.QLabel('BLE')
+        self.lableStatusSerial.setGeometry(QtCore.QRect(30, 80, 100, 30))
+        self.lableStatusSerial.setFont(font10)
+        self.pushButtonIni = QtGui.QPushButton('Initialize')
+        self.pushButtonIni.setGeometry(QtCore.QRect(30, 80, 100, 30))
+        self.frameStatusController = QtGui.QFrame()
+        self.frameStatusController.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameStatusController.setFrameShadow(QtGui.QFrame.Raised)
+        self.frameStatusSerial = QtGui.QFrame()
+        self.frameStatusSerial.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameStatusSerial.setFrameShadow(QtGui.QFrame.Raised)
+        self.gridLayoutSysIni = QtGui.QGridLayout()
+        self.gridLayoutSysIni.addWidget(self.lableIni, 0, 0, 1, 3)
+        self.gridLayoutSysIni.addWidget(self.lableStatusController, 1, 2, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.lableStatusSerial, 2, 2, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.frameStatusSerial, 2, 4, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.frameStatusController, 1, 4, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.pushButtonIni, 2, 0, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.bleAdapterConnect, 3, 0, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.bleAdapterDConnect, 3, 1, 1, 1)
+        self.gridLayoutSysIni.addWidget(self.bleIniButton, 3, 2, 1, 1)
+        self.frameSysIni.setLayout(self.gridLayoutSysIni)
+
+        self.pushButtonIni.clicked.connect(self.sys_ini)
+        self.bleAdapterConnect.clicked.connect(self.connectDongle)
+        self.bleAdapterDConnect.clicked.connect(self.dConnectDongle)	
+        self.bleIniButton.clicked.connect(self.initBLEfuctions)
+
+        self.homigXminButton = QtGui.QPushButton('Home X-')
+        self.homigYminButton = QtGui.QPushButton('Home Y-')
+        self.homigZminButton = QtGui.QPushButton('Home Z-')
+        self.homigXplsButton = QtGui.QPushButton('Home X+')
+        self.homigYplsButton = QtGui.QPushButton('Home Y+')
+        self.homigZplsButton = QtGui.QPushButton('Home Z+')
+
+        self.lableHoming = QtGui.QLabel('Homing')
+        self.lableHoming.setFont(font11)
+        self.lableHomingStatus = QtGui.QLabel('Homing status')
+        self.lableHomingStatus.setFont(font10)
+        self.pushButtonHoming = QtGui.QPushButton('Home')
+        self.frameStatusHoming = QtGui.QFrame()
+        self.frameStatusHoming.resize(20,20)
+        self.frameStatusHoming.setFrameShape(QtGui.QFrame.StyledPanel)
+        self.frameStatusHoming.setFrameShadow(QtGui.QFrame.Raised)
+        self.spacerItem1 = QtGui.QSpacerItem(379, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+        self.spacerItem2 = QtGui.QSpacerItem(20, 48, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.gridLayoutHoming = QtGui.QGridLayout()
+        self.gridLayoutHoming.addWidget(self.lableHoming, 0, 0, 1, 1)
+        self.gridLayoutHoming.addWidget(self.lableHomingStatus, 3, 2, 1, 1)
+        self.gridLayoutHoming.addWidget(self.pushButtonHoming, 3, 0, 1, 1)
+        self.gridLayoutHoming.addWidget(self.frameStatusHoming, 3, 3, 1, 1)
+        self.gridLayoutHoming.addWidget(self.pushButtonHoming, 3, 0, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigXminButton, 2, 0, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigYminButton, 2, 1, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigZminButton, 2, 2, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigXplsButton, 1, 0, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigYplsButton, 1, 1, 1, 1)
+        self.gridLayoutHoming.addWidget(self.homigZplsButton, 1, 2, 1, 1)
+        self.gridLayoutHoming.addItem(self.spacerItem1, 1, 0, 2, 4)
+        self.gridLayoutHoming.addItem(self.spacerItem2, 2, 1, 2, 1)
+        self.frameHoming.setLayout(self.gridLayoutHoming)
+        
+        self.pushButtonHoming.clicked.connect(self.homing)
+        self.homigXminButton.clicked.connect(self.homingXminus)
+        self.homigYminButton.clicked.connect(self.homingYminus)
+        self.homigZminButton.clicked.connect(self.homingZminus)
+        self.homigXplsButton.clicked.connect(self.homingXplus)
+        self.homigYplsButton.clicked.connect(self.homingYplus)
+        self.homigZplsButton.clicked.connect(self.homingZplus)
+
+        self.lableMove = QtGui.QLabel('Move to a point and measure')
+        self.lableMove.setFont(font11)
+        self.lableMoveTo = QtGui.QLabel('Move to:')
+        self.lableMoveTo.setFont(font10)
+        self.lineEditCoordinates = QtGui.QLineEdit()
+        self.pushButtonExeMove = QtGui.QPushButton('Execute')
+        self.spacerItem3 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+        self.spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.gridLayoutMove = QtGui.QGridLayout()
+        self.gridLayoutMove.addWidget(self.lableMove, 0, 0, 1, 2)
+        self.gridLayoutMove.addWidget(self.lableMoveTo, 2, 0, 1, 1)
+        self.gridLayoutMove.addWidget(self.lineEditCoordinates, 2, 1, 1, 1)
+        self.gridLayoutMove.addWidget(self.pushButtonExeMove, 2, 3, 1, 1)
+        self.gridLayoutMove.addItem(self.spacerItem3, 2, 2, 1, 1)
+        self.gridLayoutMove.addItem(self.spacerItem4, 1, 0, 1, 1)
+        self.frameMoving.setLayout(self.gridLayoutMove)
+        
+        self.pushButtonExeMove.clicked.connect(self.ExeMove)
+        
+
+        self.lableMeasure = QtGui.QLabel('Move along a path and measure')
+        self.lableMeasure.setFont(font11)
+        self.lableLoadFile = QtGui.QLabel('Load path file:')
+        self.lableLoadFile.setFont(font10)
+        self.lableSaveFile = QtGui.QLabel('Save data as:')
+        self.lableSaveFile.setFont(font10)        
+        self.lableFileName1 = QtGui.QLabel('')
+        self.lableFileName1.setFont(font10)
+        self.lableFileName2 = QtGui.QLabel('')
+        self.lableFileName2.setFont(font10)
+        iconOpenFile = QtGui.QIcon()
+        iconOpenFile.addPixmap(QtGui.QPixmap('open.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.pushButtonOpenFile = QtGui.QPushButton('')
+        self.pushButtonOpenFile.setIcon(iconOpenFile)
+        self.pushButtonSaveFile = QtGui.QPushButton('')
+        self.pushButtonSaveFile.setIcon(iconOpenFile)        
+        self.pushButtonExeMeasure = QtGui.QPushButton('Execute')
+        self.pushButtonStopMeasure = QtGui.QPushButton('Stop')
+        self.progressBar = QtGui.QProgressBar()
+        self.progressBar.setProperty("value", 0)
+        self.spacerItem5 = QtGui.QSpacerItem(127, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+        self.spacerItem6 = QtGui.QSpacerItem(81, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+        self.spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Maximum)
+        self.spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
+        self.spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+        self.spacerItem10 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
+        #spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+        self.gridLayoutMeasure = QtGui.QGridLayout()
+        self.gridLayoutMeasure.addWidget(self.lableMeasure, 0, 0, 1, 2)
+        self.gridLayoutMeasure.addItem(self.spacerItem8, 1, 0, 1, 1)        
+        self.gridLayoutMeasure.addWidget(self.lableLoadFile, 2, 0, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.pushButtonOpenFile, 2, 1, 1, 1)        
+        self.gridLayoutMeasure.addWidget(self.lableFileName1, 2, 2, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.lableSaveFile, 3, 0, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.pushButtonSaveFile, 3, 1, 1, 1)        
+        self.gridLayoutMeasure.addWidget(self.lableFileName2, 3, 2, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.pushButtonExeMeasure, 4, 0, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.pushButtonStopMeasure, 4, 1, 1, 1)
+        self.gridLayoutMeasure.addItem(self.spacerItem6, 4, 2, 1, 1)
+        self.gridLayoutMeasure.addItem(self.spacerItem5, 4, 3, 1, 1)
+        self.gridLayoutMeasure.addItem(self.spacerItem7, 5, 0, 1, 1)
+        self.gridLayoutMeasure.addWidget(self.progressBar, 6, 0, 1, 4)
+        self.gridLayoutMeasure.addItem(self.spacerItem9, 7, 0, 1, 1)
+        #self.gridLayoutMeasure.addItem(self.spacerItem10, 3, 0, 1, 1)
+        #gridLayoutMeasure.addItem(spacerItem11, 2, 3, 1, 2)
+        self.frameMeasure.setLayout(self.gridLayoutMeasure)
+        
+        self.pushButtonOpenFile.clicked.connect(self.getOpenFileName)
+        self.pushButtonSaveFile.clicked.connect(self.getSaveFileName)
+        self.pushButtonExeMeasure.clicked.connect(self.ExeMeasure)
+        self.pushButtonExeMeasure.clicked.connect(self.StopMeasure)
+        
+        self.console = Container()
+        self.hbox = QtGui.QHBoxLayout()
+        self.hbox.addWidget(self.console)
+        self.vbox = QtGui.QVBoxLayout()
+        self.vbox.addStretch(1)
+        self.vbox.addLayout(self.hbox)
+        self.frameConsole.setLayout(self.vbox)
+        
+        self.setGeometry(100,100,1000,800)
+        self.setWindowTitle("COSI-Measure")
+        self.show()
+	#Individual homing for indivudial axis.
+    #This is useful in case some probe or holder is hard to remove.
+    #For example: x0y0z0 is just above the frame. Single button homing will break if something is attached.
+    #You can manually home x and y first. Then, complete z homing at x,y max position (other corner)(Check height with probe or attachment ofc.)
+    def homingXplus(self):
+        sock.send("G162X\n" + ("\0" * (packet_size-len("G162X\n"))))
+        sock.send("G162X\n" + ("\0" * (packet_size-len("G162X\n"))))
+        self.wait_for_completion()
+    def homingYplus(self):
+        sock.send("G162Y\n" + ("\0" * (packet_size-len("G161Y\n"))))
+        sock.send("G162Y\n" + ("\0" * (packet_size-len("G161Y\n"))))
+        self.wait_for_completion()
+    def homingZplus(self):
+        sock.send("G162Z\n" + ("\0" * (packet_size-len("G161Z\n"))))
+        sock.send("G162Z\n" + ("\0" * (packet_size-len("G161Z\n"))))
+        self.wait_for_completion()
+    def homingXminus(self):
+        sock.send("G161X\n" + ("\0" * (packet_size-len("G162X\n"))))
+        sock.send("G161X\n" + ("\0" * (packet_size-len("G162X\n"))))
+        self.wait_for_completion()
+    def homingYminus(self):
+        sock.send("G161Y\n" + ("\0" * (packet_size-len("G162Y\n"))))
+        sock.send("G161Y\n" + ("\0" * (packet_size-len("G162Y\n"))))
+        self.wait_for_completion()
+    def homingZminus(self):
+        sock.send("G161Z\n" + ("\0" * (packet_size-len("G162Z\n"))))
+        sock.send("G161Z\n" + ("\0" * (packet_size-len("G162Z\n"))))
+        self.wait_for_completion()
+    
+    #This enables a local connection from an external device using a TCP_IP protocol. 
+    #The handshake is manual, I fixed some keywords please feel free to implement yours. 
+    #The main drawback: there is no access to the GUI anymore.
+    #The remote part should send a disconnect message ("CLOSECONN") to break the loop.
+    #If pipe is broken due to some kind of error, the TCP connection should manually closed from another terminal. (Not to close whole GUI which resets the homing settings)
+    #This part should definetely be improved and can be customized for different applications.
+    #Manual termination of TCP Example: 
+         #Find the offending process: netstat -np
+         #Find the socket file descriptor: lsof -np $PID
+         #Debug the process: gdb -p $PID
+         #Close the socket: call close($FD)
+         #Close the debugger: quit Source: https://www.scm.keele.ac.uk/staff/stan/2016/05/16/closing-sockets-without-killing-processes/
+         #Unfortunately the debian is limited. Some functions may not be found but the idea should be implementable. 
+    def dConnectDongle(self): 
+	self.remoteSocket = socket(AF_INET, SOCK_STREAM)
+	self.remoteSocket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
+        self.TCP_IP   = "192.168.101.253"
+        self.TCP_PORT = 7001 
+        self.remoteSocket.bind((self.TCP_IP,self.TCP_PORT))
+        self.remoteSocket.listen(1)
+        self.conn, self.addr = self.remoteSocket.accept()
+	self.connectDongle()
+        print("Connection address: ",self.addr)
+        #self.adapter.stop()
+    def connectDongle(self):
+        print("Full software control is on the Remote Machine. Click close from the otherside to make gui effective again.")
+        while True:
+            self.remoteData = self.conn.recv(BUFFER_SIZE) #receive the data
+            if(str(self.remoteData) == "CLOSECONN"): # Close connection keyword
+                self.conn.send("Closing Connection") # Acknowledge command. 
+                time.sleep(2)
+                self.conn.close()   
+		self.remoteSocket.close()
+                break                           #Activate the GUI again
+            elif(str(self.remoteData[0:3]) == "MOV"): #I always send starting with a MOV command to make it consistent. 
+                if len(self.remoteData) == 18:        #For submillimeter resolution.  
+                    #Remote data structure is (MOVXXXxxYYYyyZZZzz). 
+                    #The submillimeter precision is 2, first 3 digits are the coordinates in mm for xyz. 
+                    #E.g.: command example MOV
+                    #Please pad with zeros. i.e. 58.23 is 05823
+                    print('recv data is:', self.remoteData, 'length:', len(self.remoteData)) 
+                    self.xRem = (str(self.remoteData[3:8]))
+                    self.yRem = (str(self.remoteData[8:13]))
+                    self.zRem = (str(self.remoteData[13:18]))
+                    print('x: ',self.xRem)
+                    print('y: ',self.yRem)
+                    print('z: ',self.zRem)
+                    X = str("x")+str(self.xRem[:3])+'.'+str(self.xRem[3:5])
+                    Y = str("y")+str(self.yRem[:3])+'.'+str(self.yRem[3:5])
+                    Z = str("z")+str(self.zRem[:3])+'.'+str(self.zRem[3:5])
+                    coordinates = X + Y + Z
+                    print(coordinates)
+                elif len(self.remoteData) == 12: # For milimeter resolution
+                    #Remote data structure is (MOVXXXYYYZZZ) xxxs 
+                    print('recv data is:', self.remoteData, 'length:', len(self.remoteData)) 
+                    self.xRem = (str(self.remoteData[3:6]))
+                    self.yRem = (str(self.remoteData[6:9]))
+                    self.zRem = (str(self.remoteData[9:12]))
+                    print('x: ',self.xRem)
+                    print('y: ',self.yRem)
+                    print('z: ',self.zRem)
+                    coordinates = str("x")+str(self.xRem)+str("y")+str(self.yRem)+str("z")+str(self.zRem)
+                else:
+                    print('Unknown format')
+                    self.conn.close()
+		    self.remoteSocket.close()
+                    break
+                self.move_to(coordinates)
+                self.wait_for_completion()
+                self.conn.send("MOVOK")
+            elif(str(self.remoteData) == "OK"):
+		print("movok: ")
+                self.conn.send("MOVOK")
+    def initBLEfuctions(self):
+        print("N/A")
+
+    def sys_ini(self):
+        def coordinatesCB(handle,value):
+                print(value)
+                self.ReceivedIntArray = struct.unpack('<BBBBBBBBBBBBBBBBBBBB', value)
+                print(self.ReceivedIntArray)
+                self.xBLE =  (self.ReceivedIntArray[0]-48)*100 + (self.ReceivedIntArray[1]-48)*10 + (self.ReceivedIntArray[2]-48)
+                self.yBLE =  (self.ReceivedIntArray[3]-48)*100 + (self.ReceivedIntArray[4]-48)*10 + (self.ReceivedIntArray[5]-48)
+                self.zBLE =  (self.ReceivedIntArray[6]-48)*100 + (self.ReceivedIntArray[7]-48)*10 + (self.ReceivedIntArray[8]-48)
+                print('x: ',self.xBLE)
+                print('y: ',self.yBLE)
+                print('z: ',self.zBLE)
+                coordinates = str("x")+str(self.xBLE)+str("y")+str(self.yBLE)+str("z")+str(self.zBLE)
+                self.move_to(coordinates)
+                self.wait_for_completion()
+            #time.sleep(0.2)
+                self.thr.start()
+            #valueX = self.read_gaussmeter()
+            #valueX = 'a'
+            #cursor = self.outputText.textCursor() 
+            #cursor.insertText(valueX)
+
+        def ServerOkService (handle, value):
+           self.ReceivedIntArray = struct.unpack('<BB', value)       
+           print(self.ReceivedIntArray)
+           if(self.ReceivedIntArray[0]==107):
+            coordinates = str("x450y450z450")
+            self.move_to(coordinates)
+            self.wait_for_completion()
+            valueX = self.read_gaussmeter()
+            valueX = 'a'
+            cursor = self.outputText.textCursor() 
+            cursor.insertText(valueX)
+        wid=QtCore.QString.number(self.console.winId())
+        self.process = QtCore.QProcess(self)
+        args = [
+            "-into",
+            wid,
+            "-bc",
+            "-e",
+            "\"./mendel.elf\"",
+        ]
+        self.process.start("xterm", args)
+        time.sleep(7)
+        socketStatus = sock.connect_ex("/tmp/socket") 
+        if socketStatus == 0:
+            self.frameStatusController.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(0, 255, 0).name())
+        else:
+            self.frameStatusController.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(255, 0, 0).name())
+        #if(serPort.isOpen() == False):
+                #self.frameStatusSerial.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(255, 0, 0).name())
+            #else:
+        self.frameStatusSerial.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(0, 255, 0).name())        
+    def homing(self):
+        sock.send("G161XYZ\n" + ("\0" * (packet_size-len("G161XYZ\n"))))
+        sock.send("G161XYZ\n" + ("\0" * (packet_size-len("G161XYZ\n"))))
+        sock.send("G162XYZ\n" + ("\0" * (packet_size-len("G162XYZ\n"))))
+        sock.send("G162XYZ\n" + ("\0" * (packet_size-len("G162XYZ\n"))))
+        self.wait_for_completion()
+        self.frameStatusHoming.setStyleSheet("QWidget { background-color: %s }" % QtGui.QColor(0, 255, 0).name())
+
+    def wait_for_completion(self):
+        sock.send("check_status" + ("\0" * (packet_size-len("check_status"))))
+        msg = sock.recv(50)
+        #print msg
+        while msg == "busy":
+            sock.send("check_status" + ("\0" * (packet_size-len("check_status"))))
+            msg = sock.recv(50)
+            #print msg
+            time.sleep(1)
+
+    def ExeMove(self):
+        coordinates = str(self.lineEditCoordinates.text())
+        self.move_to(coordinates)
+        self.wait_for_completion()
+        #value = self.read_gaussmeter()
+        value = "a"
+        cursor = self.outputText.textCursor() 
+        cursor.insertText(value)
+
+    def move_to(self, coordinates):
+        G_CMD = "G0" + coordinates + "\n"
+        sock.send(G_CMD + ("\0" * (packet_size-len(G_CMD))))
+
+    def read_gaussmeter(self):
+        #serPort.write("ALLF?")
+        value = ''
+        #time.sleep(1)
+        self.device.char_write(myids.COSI_READY_CHAR ,bytearray([1, 0]), wait_for_response=False) #,0)
+        self.thr = threading.Thread(name='a test thread',target=self.read_gaussmeter)	
+        #while serPort.inWaiting() > 0:
+            #value += serPort.read(1)
+        if value != '':
+            print ">>" + value
+            return value
+        
+    def getOpenFileName(self):
+        self.filenameOpen = QtGui.QFileDialog.getOpenFileName(self, 'Open File',".","(*.path)")
+        self.lableFileName1.setText(self.filenameOpen)
+        
+    def getSaveFileName(self):
+        self.filenameSave = QtGui.QFileDialog.getSaveFileName(self, 'Save File')
+        self.lableFileName2.setText(self.filenameSave)
+        
+    def ExeMeasure(self):
+        worker = ExeMeasureThread(self.filenameOpen)
+        worker.signalCom.connect(self.onDataReady)
+        self.threads = []
+        self.threads.append(worker)
+        worker.start()
+        
+        
+    def onDataReady(self, value):
+        cursor = self.outputText.textCursor() 
+        cursor.insertText(value[1])
+        with open(self.filenameSave,"a") as dataFile:
+            dataFile.write(value[1])
+        self.progressBar.setValue(value[0])
+        
+    def StopMeasure(self):
+        pass
+        
+    def finish(self):
+        sock.send("quit"+ ("\0" * (packet_size-len("quit"))))
+        sock.close()
+        print 'finished\n'
+    
+def main():
+    app = QtGui.QApplication(sys.argv)
+    main = Main()
+    sys.exit(app.exec_())
+
+if __name__ == "__main__":
+    main()