import tkinter as tk import serial.tools.list_ports import functools import tkinter.ttk as ttk import labrobot as lrb ports = serial.tools.list_ports.comports() serialObj = serial.Serial() root = tk.Tk() root.config(bg='#b7f731') 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() cb =ttk.Combobox(root,values=serial_ports()) cb.grid(row=0,column=0,stick="we") cb.bind('<>',on_select) scb =tk.Scrollbar(root) scb.grid(row=1,column=1,rowspan=10,sticky='ns') txt = tk.Text(root,height=20,width=50) txt.grid(row=1,column=0,rowspan=10) 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'\n') def homeX(): serialObj.write(b'\n') def homeY(): serialObj.write(b'\n') def homeZ(): serialObj.write(b'\n') def homeP(): serialObj.write(b'\n') def getPos(): serialObj.write(b'\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(root,bg='#000000', fg='#b7f731', relief='flat',text='Home All',width=12,command=homeAll) b1.grid(row=0,column=2,sticky='nw') b2 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Home X',width=12,command=homeX) b2.grid(row=1,column=2,sticky='nw') b3 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Home Y',width=12,command=homeY) b3.grid(row=2,column=2,sticky='nw') b4 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Home Z',width=12,command=homeZ) b4.grid(row=3,column=2,sticky='nw') b6 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Home P',width=12,command=homeP) b6.grid(row=4,column=2,sticky='nw') b7 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Get Position',width=12,command=getPos) b7.grid(row=5,column=2,sticky='nw') l1 = tk.Label(root,bg='#000000', fg='#b7f731', relief='flat',text="Enter G-Code") l1.grid(row=0,column=3) e1 = tk.Entry(root) e1.grid(row=0,column=4) b5 = tk.Button(root,bg='#000000', fg='#b7f731', relief='flat',text='Send Code',command=do_gcode) b5.grid(row=1,column=4,sticky="ne") b8 = tk.Button(root,bg='#000000', fg='blue',relief='flat',text='Next Tip',command=nextTip) b8.grid(row=2,column=4,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()