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()