Facebook
From Mustard Matamata, 6 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 294
  1. from threading import *
  2. import serial
  3. import time
  4. import tkinter
  5. import serial.tools.list_ports
  6. import queue
  7. from tkinter import *
  8.  
  9. ser = serial.Serial()
  10. global roll
  11. roll = True
  12. q = queue.Queue()
  13.  
  14. def connection(wybranyPort):
  15.     try:
  16.         global ser
  17.         ser = serial.Serial(wybranyPort, 57600, timeout=0,
  18.                             parity=serial.PARITY_NONE, rtscts=1)
  19.         messagebox.showinfo( "Connection", "Connected!")
  20.     except:
  21.         messagebox.showinfo( "Connection", "Connection Failed!")
  22.  
  23. def sendReset():
  24.     try:
  25.         tablicaHEX = bytes([0x02, 0x00, 0x3C, 0x3C, 0x00])
  26.         ser.setRTS(True)
  27.         ser.setDTR(True)
  28.         time.sleep(0.01)
  29.         ser.write(bytes(tablicaHEX))
  30.         ser.setRTS(False)
  31.         ser.setDTR(True)
  32.     except:
  33.         print("Nie mozna wyslac RESETU")
  34.        
  35. def receiveData():
  36.     global ser
  37.     global q
  38.     global dataList
  39.     while(roll):
  40.         if(ser.isOpen() == True):
  41.             while(ser.inWaiting()):
  42.                 s = ser.read()
  43.                 for i in s:
  44.                     q.put(i)
  45.                 while not q.empty():
  46.                     tab = hex(q.get())
  47.                     dataList.config(state=NORMAL)
  48.                     dataList.insert(END, tab + " ")
  49.                     dataList.config(state=DISABLED)
  50. global t
  51. t = Thread(target=receiveData)
  52. try:
  53.     if(t.isAlive()==False):
  54.         t.start()
  55. except:
  56.     print("Nie moze wystartowac watek")
  57.  
  58. """
  59. GRAFICZNY INTERFEJS UZYTKOWNIKA
  60. """
  61.  
  62. def selectComPort():
  63.     wybranyElement = listBox.curselection()
  64.     for i in wybranyElement:
  65.         wybranyPort = listBox.get(i)
  66.     connection(wybranyPort)
  67.    
  68. def listOfComPorts(mainFrame):
  69.     global listBox
  70.     comPorts = list(serial.tools.list_ports.comports())
  71.     listBox = Listbox(mainFrame, width = 15, height = 1, selectmode=EXTENDED)
  72.     if(len(comPorts) == 0):
  73.         listBox.insert(0, "Brak")
  74.     for i in range(len(comPorts)):
  75.         listBox.insert(i, comPorts[i][0])
  76.     listBox.grid(sticky = W, row=0, column=1)
  77.  
  78. def createLabel():
  79.     labelChoosePort = Label(text = 'Wybierz port: ')
  80.     labelChoosePort.grid(row = 0, column = 0,columnspan = 1, rowspan = 2)
  81. def createConnectButton():
  82.     buttonConnect = Button(text = "Polacz", command=selectComPort)
  83.     buttonConnect.grid(row=0, column = 2)
  84.  
  85. def createResetButton():
  86.     buttonReset = Button(text = "Reset", command=sendReset)
  87.     buttonReset.grid(row=2, column = 2)
  88.  
  89. def createDataList():
  90.     global dataList
  91.     dataList = Text(height=20, width = 70)
  92.     dataList.grid(row=3, column = 0, columnspan = 5)
  93.  
  94. def createFrame():
  95.     mainFrame = tkinter.Tk()
  96.     mainFrame.geometry('500x200')
  97.     createLabel()
  98.     createDataList()
  99.     listOfComPorts(mainFrame)
  100.     createConnectButton()
  101.     createResetButton()
  102.     mainFrame.mainloop()
  103.  
  104. def main():
  105.     createFrame()
  106.     ser.close
  107.    
  108.    
  109. if __name__ == "__main__":
  110.     main()
  111.  
  112.