diff --git a/gui/queue_thread.py b/gui/queue_thread.py new file mode 100644 index 0000000..eee7895 --- /dev/null +++ b/gui/queue_thread.py @@ -0,0 +1,33 @@ +import queue +import threading + +num_workers = 4 + +q = queue.Queue() + +def do_work(item): + print(item) + +def worker(): + while True: + item = q.get() + if item is None: + break + do_work(item) + q.task_done() + +threads = [] +for i in range(num_workers): + t = threading.Thread(target=worker) + t.start() + threads.append(t) + + +for i in range(100): + q.put(i) + +for i in range(num_workers): + q.put(None) + +for t in threads: + t.join() diff --git a/gui/ser_one.py b/gui/ser_one.py new file mode 100644 index 0000000..01e2047 --- /dev/null +++ b/gui/ser_one.py @@ -0,0 +1,46 @@ +from tkinter import * +import serial.tools.list_ports +import functools + +ports = serial.tools.list_ports.comports() +serialObj = serial.Serial() + +root = Tk() +root.config(bg='grey') + +def initComPort(index): + currentPort = str(ports[index]) + comPortVar = str(currentPort.split(' ')[0]) + serialObj.port = comPortVar + serialObj.baudrate = 9600 + serialObj.open() + +for onePort in ports: + comButton = Button(root,text=onePort,font=('Calibri','13'),height=1, width=45,command=functools.partial(initComPort,index=ports.index(onePort))) + comButton.grid(row=ports.index(onePort),column=0) + +dataCanvas = Canvas(root,width=600,height=400, bg='white') +dataCanvas.grid(row=0, column=1,rowspan=100) +vsb = Scrollbar(root,orient='vertical',command= dataCanvas.yview) +vsb.grid(row=0,column=2,columnspan=100,sticky='ns') +dataCanvas.config(yscrollcommand=vsb.set) +dataFrame = Frame(dataCanvas,bg='white') +dataCanvas.create_window((10,0),window=dataFrame,anchor='nw') + +def letsDoIt(): + serialObj.write(b'Ok there\n') + +b1 = Button(root,text='Click me',command=letsDoIt) +b1.grid(row=0,column=3) + +def checkSerialPort(): + if serialObj.isOpen() and serialObj.in_waiting: + recentPacket = serialObj.readline() + recentPacketString = recentPacket.decode('utf').rstrip('\n') + Label(dataFrame,text=recentPacketString).pack() + +while True: + root.update() + checkSerialPort() + dataCanvas.config(scrollregion=dataCanvas.bbox("all")) +