labrobot/gui/ser_one.py
2021-11-25 23:03:43 +01:00

131 lines
3.7 KiB
Python

import tkinter as tk
from tkinter.constants import W
import serial.tools.list_ports
import functools
import tkinter.ttk as ttk
import labrobot as lrb
# serial ports
ports = serial.tools.list_ports.comports()
serialObj = serial.Serial()
def serial_ports():
return serial.tools.list_ports.comports()
def on_select(event=None):
serialObj.port = cb.get().split(' ')[0]
serialObj.baudrate = 115200
serialObj.open()
root = tk.Tk()
#configue root
root.title("Jfs Labrobot")
root.geometry('800x500+300+300')
root.columnconfigure(0,weight=1)
root.rowconfigure(0,weight=1)
#root.config(bg='#b7f731')
notebook = ttk.Notebook(root)
notebook.grid(sticky='news',padx=5,pady=5)
notebook.enable_traversalrightmainframe = ttk.Frame(notebook)
mainframe = ttk.Frame(notebook)
#mainframe.rowconfigure(0,weight=1)
mainframe.columnconfigure(0,weight=1)
notebook.add(mainframe,text='main',underline=0)
leftframe = ttk.Frame(mainframe)
leftframe.columnconfigure(0,weight=1)
leftframe.rowconfigure(1,weight=1)
leftframe.grid(column=0,row=0,sticky='news')
rightframe = ttk.Frame(mainframe)
rightframe.columnconfigure(0,weight=1)
rightframe.rowconfigure(0,weight=1)
rightframe.grid(column=1,row=0,sticky='new')
uprightframe =ttk.LabelFrame(rightframe,text='Basic')
uprightframe.grid(column=0,row=0,sticky='ns')
downrightframe =ttk.LabelFrame(rightframe,text='More to select')
downrightframe.grid(column=0,row=1,sticky='new',pady=5)
cb =ttk.Combobox(leftframe,values=serial_ports())
cb.grid(row=0,column=0,stick="nwe")
cb.bind('<<ComboboxSelected>>',on_select)
scb =tk.Scrollbar(leftframe)
scb.grid(row=1,column=1,sticky='ns')
#txt = tk.Text(leftframe,height=30,width=50)
txt = tk.Text(leftframe)
txt.grid(row=1,column=0,sticky='ewns')
scb.config(command=txt.yview)
txt.config(yscrollcommand=scb.set)
txt.tag_configure('small',font=('Verdana',8),foreground='black')
## init Labrobot
lpb = lrb.LabPipBlock(15,1,70,50,5,108,86)
pip = lrb.LabPip(vol=1000,top=22)
pip.fe =5000
def homeAll():
serialObj.write(b'<G28>\n')
def homeX():
serialObj.write(b'<JX>\n')
def homeY():
serialObj.write(b'<JY>\n')
def homeZ():
serialObj.write(b'<JZ>\n')
def homeP():
serialObj.write(b'<JP>\n')
def getPos():
serialObj.write(b'<J2>\n')
def do_gcode():
s = e1.get()
s = s + '\n'
print(s)
serialObj.write(s.encode('utf-8'))
def upTip():
serialObj.write(pip.up().encode('utf-8'))
def downTip():
serialObj.write(pip.down().encode('utf-8'))
def nextTip():
upTip()
serialObj.write(pip.get_tip(lpb.next()).encode('utf-8'))
downTip()
b1 = tk.Button(uprightframe,text='Home All',width=12,command=homeAll).grid(row=0,column=0,sticky='nw')
b2 = tk.Button(uprightframe,text='Home X',width=12,command=homeX).grid(row=0,column=1,sticky='ne')
b3 = tk.Button(uprightframe,text='Home Y',width=12,command=homeY).grid(row=1,column=0,sticky='nw')
b4 = tk.Button(uprightframe,text='Home Z',width=12,command=homeZ).grid(row=1,column=1,sticky='ne')
b6 = tk.Button(uprightframe,text='Home P',width=12,command=homeP).grid(row=2,column=0,sticky='nw')
b7 = tk.Button(uprightframe,text='Get Position',width=12,command=getPos).grid(row=2,column=1,sticky='ne')
l1 = tk.Label(uprightframe,text="Enter G-Code").grid(row=3,column=0)
e1 = tk.Entry(uprightframe).grid(row=3,column=1)
b5 = tk.Button(uprightframe,text='Send Code',command=do_gcode).grid(row=4,column=1,sticky="ne")
b8 = tk.Button(downrightframe,text='Next Tip',command=nextTip).grid(row=0,column=0,sticky='ne')
def checkSerialPort():
if serialObj.isOpen() and serialObj.in_waiting:
recentPacket = serialObj.readline()
recentPacketString = recentPacket.decode('utf')
txt.insert('0.1',recentPacketString,'small')
while True:
root.update()
checkSerialPort()