Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.95 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from threading import Thread
  3. import time
  4. from time import sleep
  5. from time import strftime
  6. import datetime
  7. from datetime import datetime
  8. import tkinter as tk
  9. from tkinter import ttk
  10. from queue import Queue
  11. import RPi.GPIO as GPIO
  12. import sys
  13. sys.path.append('/home/pi/MFRC522-python')
  14. from mfrc522 import SimpleMFRC522
  15. reader = SimpleMFRC522()
  16.  
  17. LARGE_FONT= ("Verdana", 28)
  18. CLOCK_FONT= ("Verdana", 96)
  19. the_time=''
  20. TIME = newtime = time.time()
  21.  
  22. class TimeClock(tk.Tk):
  23. def __init__(self, *args, **kwargs):
  24. tk.Tk.__init__(self, *args, **kwargs)
  25. container = tk.Frame(self)
  26. container.pack(side="top", fill="both", expand= True)
  27. container.grid_rowconfigure(0, weight=1)
  28. container.grid_columnconfigure(0, weight=1)
  29.  
  30. self.frames = {}
  31. for F in (StartPage, PageOne, PageTwo):
  32. frame = F(container, self)
  33. self.frames[F] = frame
  34. frame.grid(row=0, column=0, sticky="nsew")
  35. self.show_frame(StartPage)
  36.  
  37. def show_frame(self, cont):
  38. frame = self.frames[cont]
  39. frame.tkraise()
  40.  
  41. def go(self):
  42. p = Backend(self.queue)
  43. p.start()
  44. self.after(100, self.check_queue)
  45.  
  46. class StartPage(tk.Frame):
  47. def __init__(self, parent, controller):
  48. tk.Frame.__init__(self, parent)
  49. self.configure(background="darkblue")
  50.  
  51. label = tk.Label(self, text="XCompany", font=LARGE_FONT, bg="darkblue", fg="yellow")
  52. label.pack(pady=10,padx=10)
  53.  
  54. lblSwipe = tk.Label(self, text="Swipe Card", font=LARGE_FONT, bg="darkblue", fg="yellow")
  55. lblSwipe.pack(pady=10, padx=10)
  56.  
  57. btnOtherFrame = tk.Button(self, text="RFID Scan Should Open Next Frame", command=lambda: controller.show_frame(PageTwo))
  58. btnOtherFrame.pack()
  59.  
  60. self.status = tk.StringVar(self, value= "") #'.')
  61. tk.Label(self, textvariable=self.status,font=LARGE_FONT, fg="yellow", bg="Darkblue").place(x=600, y = 350 ,anchor = "s") #, anchor= "n")# pack(side="top")
  62.  
  63. self.queue = Queue()
  64.  
  65. self.go()
  66.  
  67. def go(self):
  68. p = Backend(self.queue)
  69. p.start()
  70. self.after(100, self.check_queue)
  71.  
  72. def check_queue(self):
  73. if not self.queue.empty():
  74. self.status.set(self.queue.get())
  75. if self.status.get() != 'done':
  76. self.after(100, self.check_queue)
  77.  
  78. class PageOne(tk.Frame):
  79. def __init__(self, parent, controller):
  80. tk.Frame.__init__(self, parent)
  81. label = tk.Label(self, text="Page One", font=LARGE_FONT)
  82. label.pack(pady=10,padx=10)
  83.  
  84. button1 = tk.Button(self, text="Back to Home", command=lambda: controller.show_frame(StartPage))
  85. button1.pack()
  86.  
  87. button2 = tk.Button(self, text="Visit Page 2", command=lambda: controller.show_frame(PageTwo))
  88. button2.pack()
  89.  
  90. class PageTwo(tk.Frame):
  91. def __init__(self, parent, controller):
  92. tk.Frame.__init__(self, parent)
  93. label = tk.Label(self, text="Page Two", font=LARGE_FONT)
  94. label.pack(pady=10,padx=10)
  95.  
  96. button1 = tk.Button(self, text="Back to Home", command=lambda: controller.show_frame(StartPage))
  97. button1.pack()
  98.  
  99. button2 = tk.Button(self, text="Vist Page 1", command=lambda: controller.show_frame(PageOne))
  100. button2.pack()
  101.  
  102. class Backend(Thread):
  103. def __init__(self, queue, *args, **kwargs):
  104. super().__init__(*args, **kwargs)
  105. self.queue = queue
  106.  
  107. def run(self):
  108. self.queue.put('')
  109. #for n in range(1, 100): Just have a loop to keep checking for input
  110. i = 1;
  111. while i == 1:
  112. print("Hold a tag near the reader")
  113. try:
  114. id, text = reader.read()
  115. print(id)
  116. print(text)
  117.  
  118. strName = "Accepted: " + text[5:]
  119. #self.queue.put(text)
  120. self.queue.put(strName)
  121.  
  122. sleep(1)
  123. strEmpNo = text[:4]
  124. print(strEmpNo)
  125.  
  126. strEmpName =text[5:]
  127. strEmpName = strEmpName.strip()
  128. print(strEmpName)
  129.  
  130. rawTime = time.time()
  131. print (rawTime)
  132. strRawTime = str(rawTime)
  133.  
  134. current_time = strftime("%H:%M:%S")
  135. print (current_time)
  136.  
  137. date_time = strftime("%m/%d/%Y")
  138. print(date_time)
  139.  
  140. currentDT = strftime("%m/%d/%Y %H:%M:%S")
  141. strDate = str(currentDT)
  142. print (str(currentDT))
  143.  
  144. #Save Data to MySQL DB
  145.  
  146. sleep(2) # pause needed so we do not get multiple entry's
  147. self.queue.put('')
  148.  
  149. #except:
  150. except Exception as e: print(e)
  151. #print("exception")
  152.  
  153. self.queue.put('done')
  154. GPIO.cleanup()
  155.  
  156. app = TimeClock()
  157. app.geometry("800x480")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement