from tkinter import *
from subprocess import PIPE, run
def syscmd(command):
result = run(command, stdout=PIPE, stderr=PIPE, universal_newlines=True, shell=True)
return result.stdout
my_output = syscmd("pwd")
usmcexe="./usmc_ctrl"
print(my_output)
def setPositionCB( val1, val2, val3 ):
print("Set Position CB to x={} y={}".format(val1.get(), val2.get()) )
print(syscmd(usmcexe + " -n {} -m {}".format( 0, val1.get())))
print(syscmd(usmcexe + " -n {} -m {}".format( 1, val2.get())))
print(syscmd(usmcexe + " -n {} -m {}".format( 2, val3.get())))
getPositionCB()
def setNodePositionCB( node, val2 ):
print("Set NodePosition CB to node={} x={}".format(node, val2.get()) )
print(syscmd(usmcexe + " -n {} -m {}".format( node, val2.get())))
getPositionCB()
def homeCB():
print("homeCB")
syscmd(usmcexe + " -n 0 -h 1")
syscmd(usmcexe + " -n 1 -h 1")
syscmd(usmcexe + " -n 2 -h 1")
def resetCB():
print("resetCB")
syscmd(usmcexe + " -n 0 -r 1")
syscmd(usmcexe + " -n 1 -r 1")
syscmd(usmcexe + " -n 2 -r 1")
def enableCB():
print("enableCB")
syscmd(usmcexe + " -n 0 -p 1")
syscmd(usmcexe + " -n 1 -p 1")
syscmd(usmcexe + " -n 2 -p 1")
def disableCB():
print("enableCB")
syscmd(usmcexe + " -n 0 -p 0")
syscmd(usmcexe + " -n 1 -p 0")
syscmd(usmcexe + " -n 2 -p 0")
def getStatusCB():
print("getStatusCB")
print(syscmd(usmcexe + " -a"))
def getPositionCB():
global x
cpx.set(str(syscmd(usmcexe + " -n 0 -g").split()[3]))
cpy.set(str(syscmd(usmcexe + " -n 1 -g").split()[3]))
cpz.set(str(syscmd(usmcexe + " -n 2 -g").split()[3]))
print("getCB ", syscmd(usmcexe + " -n 0 -g"))
print("getCB ", syscmd(usmcexe + " -n 1 -g"))
print("getCB ", syscmd(usmcexe + " -n 2 -g"))
def stepCB(node, step):
def wrapper(x=node, y=step):
pass
pass
pass
print("stepCB {} {}".format(x, y))
print(syscmd(usmcexe + " -n {} -u {}".format(x,y)))
getPositionCB()
return x+y
return wrapper
def connectCB(port):
print("connect ", port.get())
def disconnectCB():
print("disconnect ", port.get())
root = Tk()
root.geometry('510x200')
root.title("Standa usmc Stage Control")
px = StringVar(value='10000')
posx = Entry(root, width=10, textvariable=px)
posx.grid(column=3, row=1)
py = StringVar(value='10000')
posy = Entry(root, width=10, textvariable=py)
posy.grid(column=3, row=2)
pz = StringVar(value='10000')
posz = Entry(root, width=10, textvariable=pz)
posz.grid(column=3, row=3)
cpx = StringVar(value='0')
cposx = Entry(root, width=10, state='disabled', textvariable=cpx)
cposx.grid(column=1, row=1)
cpy = StringVar(value='0')
cposy = Entry(root, width=10, state='disabled', textvariable=cpy)
cposy.grid(column=1, row=2)
cpz = StringVar(value='0')
cposz = Entry(root, width=10, state='disabled', textvariable=cpz)
cposz.grid(column=1, row=3)
btnx = Button(root, text="Set X", command=lambda: setNodePositionCB(0, px))
btnx.grid(column=4, row=1)
btny = Button(root, text="Set Y", command=lambda: setNodePositionCB(1, py))
btny.grid(column=4, row=2)
btnz = Button(root, text="Set Z", command=lambda: setNodePositionCB(2, pz))
btnz.grid(column=4, row=3)
gtx = Button(root, text=">", command=stepCB(0, 1000))
gtx.grid(column=2, row=1)
gty = Button(root, text=">", command=stepCB(1, 1000))
gty.grid(column=2, row=2)
gtz = Button(root, text=">", command=stepCB(2, 1000))
gtz.grid(column=2, row=3)
ltx = Button(root, text="<", command=stepCB(0, -1000))
ltx.grid(column=0, row=1)
lty = Button(root, text="<", command=stepCB(1, -1000))
lty.grid(column=0, row=2)
ltz = Button(root, text="<", command=stepCB(2, -1000))
ltz.grid(column=0, row=3)
w = Label(root, text="Current Position")
w.grid(column=1, row=0)
getxy = Button(root, text="Get", width=10, command=getPositionCB)
getxy.grid(column=1, row=4)
setxy = Button(root, text="Set", width=10, command=lambda: setPositionCB(px, py, pz))
setxy.grid(column=3, row=4)
homeb = Button(root, text="Home",width=10, command=homeCB)
homeb.grid(column=4, row=5)
resetb = Button(root, text="Reset", width=10, command=resetCB)
resetb.grid(column=1, row=5)
enableb = Button(root, text="Enable", width=10, command=enableCB)
enableb.grid(column=2, row=5)
statusb = Button(root, text="Get Status", width=10, command=getStatusCB)
statusb.grid(column=3, row=5)
#portl = Label(root, text="Port")
#portl.grid(column=0, row=6)
#port = StringVar(value="/dev/ttyUSB0")
#porte = Entry(root,width=10, textvariable=port)
#porte.grid(column=1, row=6)
#connectb = Button(root, text="Connect",width=10, command=lambda: connectCB(port))
#connectb.grid(column=2, row=6)
#disconnectb = Button(root, text="Disconnect", width=10, command=disconnectCB)
#disconnectb.grid(column=3, row=6)
getPositionCB()
root.mainloop()