from threading import * import serial import time import tkinter import serial.tools.list_ports import queue from tkinter import * ser = serial.Serial() global roll roll = True q = queue.Queue() def connection(wybranyPort): try: global ser ser = serial.Serial(wybranyPort, 57600, timeout=0, parity=serial.PARITY_NONE, rtscts=1) messagebox.showinfo( "Connection", "Connected!") except: messagebox.showinfo( "Connection", "Connection Failed!") def sendReset(): try: tablicaHEX = bytes([0x02, 0x00, 0x3C, 0x3C, 0x00]) ser.setRTS(True) ser.setDTR(True) time.sleep(0.01) ser.write(bytes(tablicaHEX)) ser.setRTS(False) ser.setDTR(True) except: print("Nie mozna wyslac RESETU") def receiveData(): global ser global q global dataList while(roll): if(ser.isOpen() == True): while(ser.inWaiting()): s = ser.read() for i in s: q.put(i) while not q.empty(): tab = hex(q.get()) dataList.config(state=NORMAL) dataList.insert(END, tab + " ") dataList.config(state=DISABLED) global t t = Thread(target=receiveData) try: if(t.isAlive()==False): t.start() except: print("Nie moze wystartowac watek") """ GRAFICZNY INTERFEJS UZYTKOWNIKA """ def selectComPort(): wybranyElement = listBox.curselection() for i in wybranyElement: wybranyPort = listBox.get(i) connection(wybranyPort) def listOfComPorts(mainFrame): global listBox comPorts = list(serial.tools.list_ports.comports()) listBox = Listbox(mainFrame, width = 15, height = 1, selectmode=EXTENDED) if(len(comPorts) == 0): listBox.insert(0, "Brak") for i in range(len(comPorts)): listBox.insert(i, comPorts[i][0]) listBox.grid(sticky = W, row=0, column=1) def createLabel(): labelChoosePort = Label(text = 'Wybierz port: ') labelChoosePort.grid(row = 0, column = 0,columnspan = 1, rowspan = 2) def createConnectButton(): buttonConnect = Button(text = "Polacz", command=selectComPort) buttonConnect.grid(row=0, column = 2) def createResetButton(): buttonReset = Button(text = "Reset", command=sendReset) buttonReset.grid(row=2, column = 2) def createDataList(): global dataList dataList = Text(height=20, width = 70) dataList.grid(row=3, column = 0, columnspan = 5) def createFrame(): mainFrame = tkinter.Tk() mainFrame.geometry('500x200') createLabel() createDataList() listOfComPorts(mainFrame) createConnectButton() createResetButton() mainFrame.mainloop() def main(): createFrame() ser.close if __name__ == "__main__": main()