Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.57 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import os
  4. import multiprocessing
  5. import threading
  6. import time
  7. import OpenOPC
  8. # include
  9.  
  10.  
  11. EPR_HEARTBEAT = 0
  12. import opc_ariana
  13. from multiprocessing import *
  14. from opc_ariana import *
  15. from OpenOPC import *
  16. from threading import *
  17. from os import *
  18. #import for library
  19. watch_dog = 0
  20. from lackey import *
  21. from Tkinter import *
  22.  
  23. #Variable
  24.  
  25. firstBarcode = "112345678"
  26. secondcode = "12345678"
  27.  
  28. # Check Logo rutine
  29. def Check_Logo():
  30.  global watch_dog
  31.  global EPR_HEARTBEAT
  32.  if exists(Pattern("images/logo.png").similar(0.65)):
  33.  # Check Logo for Watch Dog
  34.     watch_dog = 1
  35.  
  36.     EPR_HEARTBEAT = "ON"
  37.  else:
  38.     watch_dog = 0
  39.     EPR_HEARTBEAT = "OFF"
  40.  
  41. #
  42.            
  43. # Watch Dog
  44. class WatchDog(object):
  45.     """ Watch dog example class
  46.    The run() method will be started and it will run in the background
  47.    until the application exits.
  48.    """
  49.  
  50.     def __init__(self, beat, interval=1 ):
  51.         """ Constructor
  52.        :type interval: int
  53.        :param interval: Check interval, in seconds
  54.        :   time.sleep(self.interval)
  55.        """
  56.         self.watch_dog = beat
  57.         self.interval = interval
  58.        
  59.         thread = threading.Thread(target=self.run, args=())
  60.         thread.daemon = True                            # Daemonize thread
  61.         thread.start()                                  # Start the execution
  62.  
  63.        
  64.     def run(self):
  65.         #  Method that runs forever
  66.         while True:
  67.             Check_Logo()
  68.            
  69.             opc_read()
  70.             wait(1)
  71.             opc_write()
  72.            
  73. #update GUI          
  74. class Worker(threading.Thread):
  75.     def __init__(self, val):
  76.         self.n = 0
  77.         self.val = val
  78.         threading.Thread.__init__(self)
  79.         self.setDaemon(True)
  80.         self.start()
  81.  
  82.     def run(self):
  83.         while True:
  84.            
  85.             # Watch Dog
  86.             if watch_dog == 0:  
  87.              self.val.set("EP OFFLINE")
  88.              actual_value()
  89.              time.sleep(2)
  90.             if watch_dog == 1:  
  91.              self.val.set("EP ONLINE")
  92.              actual_value()
  93.              time.sleep(2)              
  94.    
  95.      
  96. # Functions
  97. # Copy data from OPC to GUI
  98. def actual_value():
  99.              
  100.              opc_read()
  101.              GUI_EPR_Command_register.set(opc_ariana.EPR_Command_register)
  102.              GUI_EPR_Product_barcode.set(opc_ariana.EPR_Product_barcode)
  103.              GUI_EPR_Original_EIN_barcode.set(opc_ariana.EPR_Original_EIN_barcode)
  104.              GUI_EPR_Product_barcode2.set(opc_ariana.EPR_Product_barcode2)
  105.              GUI_EPR_Label_EIN_barcode.set(opc_ariana.EPR_Label_EIN_barcode)
  106.              GUI_EPR_Naam_patient.set(opc_ariana.EPR_Naam_patient)
  107.              GUI_EPR_Original_EIN_barcode2.set(opc_ariana.EPR_Original_EIN_barcode2)
  108.              GUI_EPR_Bloedgroep_barcode.set(opc_ariana.EPR_Bloedgroep_barcode)
  109.            
  110.  
  111.              opc_write()
  112.              GUI_EPR_Ready1.set(opc_ariana.EPR_Ready1)
  113.              GUI_EPR_Ready2.set(opc_ariana.EPR_Ready2)
  114.              GUI_EPR_Code_valid.set(opc_ariana.EPR_Code_valid)
  115.              GUI_EPR_HEARTBEAT.set(opc_ariana.EPR_HEARTBEAT)
  116.              GUI_EPR_REASON.set(opc_ariana.EPR_REASON)
  117.              GUI_EPR_ALARM.set(opc_ariana.EPR_ALARM)
  118.            
  119.                                
  120. # Main rutine
  121. def main_loop():
  122.  while exists("images/logo.png", 10):
  123.    
  124.    click(Pattern("images/product.png").similar(0.95))
  125.    click(Pattern("images/Vrijgeven.png").similar(0.95))
  126.  
  127.    print watch_dog
  128.    click("images/Print.png")
  129.    click(Pattern("images/yellow_input.png").exact())
  130.    type(firstBarcode)
  131.    ask_loop()
  132. #
  133. # Exit rutine
  134.  
  135. def exit_program():
  136.  exitmsges = tkMessageBox.showinfo("Ariana","Thank you for use.")
  137.  print exitmsges
  138.  sys.exit()
  139. #
  140. # start window rutine
  141. def ask_loop():
  142.   startmsges = tkMessageBox.askyesno("Ariana","Do you want to start?")
  143.   print startmsges
  144.   answer = startmsges
  145.   # If you want start or continue then ...
  146.   if startmsges == True:
  147.    main_loop()
  148.  
  149. # GUI
  150.  
  151. #
  152. #Program start
  153. #
  154. Control = WatchDog(WatchDog)
  155. Control
  156. # Windo control
  157. def create_window():
  158.     window_opc = tk.Toplevel(hlavni)
  159.     window_opc.minsize(200, 200)
  160.     window_opc.maxsize(400, 700)
  161.     window_opc.title("Ariana OPC Control")
  162.     # Scada to Ariana
  163.     label = Label(window_opc, text="SCADA = > ARIANA.").grid(row=0)
  164.     label = Label(window_opc, text="Command Register :", anchor='w').grid(row=2)
  165.     label = Label(window_opc, text="", textvariable=GUI_EPR_Command_register, anchor='w').grid(row=2, column=1 )
  166.     label = Label(window_opc, text="EPR_Product_barcode :", anchor='w').grid(row=3)
  167.     label = Label(window_opc, text="", textvariable=GUI_EPR_Product_barcode, anchor='w').grid(row=3, column=1 )
  168.     label = Label(window_opc, text="EPR_Original_EIN_barcode :", anchor='w').grid(row=4)
  169.     label = Label(window_opc, text="", textvariable=GUI_EPR_Original_EIN_barcode, anchor='w').grid(row=4, column=1 )
  170.     label = Label(window_opc, text="EPR_Product_barcode2 :", anchor='w').grid(row=5)
  171.     label = Label(window_opc, text="", textvariable=GUI_EPR_Product_barcode2, anchor='w').grid(row=5, column=1 )
  172.     label = Label(window_opc, text="EPR_Label_EIN_barcode :", anchor='w').grid(row=6)
  173.     label = Label(window_opc, text="", textvariable=GUI_EPR_Label_EIN_barcode, anchor='w').grid(row=6, column=1 )
  174.     label = Label(window_opc, text="EPR_Naam_patient :", anchor='w').grid(row=7)
  175.     label = Label(window_opc, text="", textvariable=GUI_EPR_Naam_patient, anchor='w').grid(row=7, column=1 )
  176.     label = Label(window_opc, text="EPR_Original_EIN_barcode2 :", anchor='w').grid(row=8)
  177.     label = Label(window_opc, text="", textvariable=GUI_EPR_Original_EIN_barcode2, anchor='w').grid(row=8, column=1 )
  178.     label = Label(window_opc, text="EPR_Bloedgroep_barcode :", anchor='w').grid(row=9)
  179.     label = Label(window_opc, text="", textvariable=GUI_EPR_Bloedgroep_barcode, anchor='w').grid(row=9, column=1 )
  180.      # Ariana to Scada
  181.     label = Label(window_opc, text="").grid(row=9)
  182.     label = Label(window_opc, text="ARIANA = > SCADA.").grid(row=10)
  183.     label = Label(window_opc, text="EPR_Ready1 :", anchor='w').grid(row=11)
  184.     label = Label(window_opc, text="", textvariable=GUI_EPR_Ready1, anchor='w').grid(row=11, column=1 )
  185.     label = Label(window_opc, text="EPR_Ready2 :", anchor='w').grid(row=12)
  186.     label = Label(window_opc, text="", textvariable=GUI_EPR_Ready2, anchor='w').grid(row=12, column=1 )
  187.     label = Label(window_opc, text="EPR_Code_valid :", anchor='w').grid(row=13)
  188.     label = Label(window_opc, text="", textvariable=GUI_EPR_Code_valid, anchor='w').grid(row=13, column=1 )
  189.     label = Label(window_opc, text="EPR_HEARTBEAT :", anchor='w').grid(row=14)
  190.     label = Label(window_opc, text="", textvariable=GUI_EPR_HEARTBEAT, anchor='w').grid(row=14, column=1 )
  191.     label = Label(window_opc, text="EPR_REASON :", anchor='w').grid(row=15)
  192.     label = Label(window_opc, text="", textvariable=GUI_EPR_REASON, anchor='w').grid(row=15, column=1 )
  193.     label = Label(window_opc, text="EPR_ALARM :", anchor='w').grid(row=16)
  194.     label = Label(window_opc, text="", textvariable=GUI_EPR_ALARM, anchor='w').grid(row=16, column=1 )
  195.  
  196.     write_to_scada = tk.Button(window_opc, text="Write data for Validation", command=opc_status).grid(row=18, column=0 )
  197.    
  198.  # HERE START GUI
  199. hlavni = Tk()
  200. hlavni.title("Ariana 0.1")
  201. hlavni.resizable(width=False, height=False)
  202. hlavni.minsize(200, 200)
  203. hlavni.maxsize(200, 200)
  204.  
  205. nabidka = Menu(hlavni)
  206. hlavni.config(menu=nabidka)
  207.  
  208. Label(hlavni, text="Ariana Online",
  209.       fg="black",
  210.       font="Verdana 10 bold", anchor='w').pack()
  211.  
  212.  
  213. menuSoubor = Menu(nabidka)
  214. nabidka.add_cascade(label="Control", menu=menuSoubor)
  215. menuSoubor.add_command(label=u"Start", command=ask_loop)
  216. menuSoubor.add_command(label=u"OPC Status", command=create_window)
  217.  
  218.  
  219. menuSoubor.add_separator()
  220. menuSoubor.add_command(label="Exit", command=exit_program)
  221. # GUI variable define datatype
  222. lbVal = StringVar()
  223. GUI_EPR_Naam_patient = StringVar()
  224. GUI_EPR_Command_register = StringVar()
  225. GUI_EPR_Product_barcode = StringVar()
  226. GUI_EPR_Original_EIN_barcode = StringVar()
  227. GUI_EPR_Product_barcode2 = StringVar()
  228. GUI_EPR_Label_EIN_barcode = StringVar()
  229. GUI_EPR_Original_EIN_barcode2 = StringVar()
  230. GUI_EPR_Ready1 = StringVar()
  231. GUI_EPR_Ready2 = StringVar()
  232. GUI_EPR_Code_valid = StringVar()
  233. GUI_EPR_HEARTBEAT = StringVar()
  234. GUI_EPR_REASON = StringVar()
  235. GUI_EPR_ALARM = StringVar()
  236. GUI_EPR_Bloedgroep_barcode = StringVar()
  237.  
  238. label = Label(hlavni, text="EP STATUS...", textvariable=lbVal).pack(padx=20, pady=20)
  239. worker = Worker(lbVal)
  240.  
  241. mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement