Skip to content
Snippets Groups Projects
Commit 43656215 authored by Berk Silemek's avatar Berk Silemek
Browse files

The main file that works on the COSI Measure computer

parent 56bc8914
No related branches found
No related tags found
No related merge requests found
# 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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment