Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import sys
- import os
- import multiprocessing
- import threading
- import time
- import OpenOPC
- # include
- EPR_HEARTBEAT = 0
- import opc_ariana
- from multiprocessing import *
- from opc_ariana import *
- from OpenOPC import *
- from threading import *
- from os import *
- #import for library
- watch_dog = 0
- from lackey import *
- from Tkinter import *
- #Variable
- firstBarcode = "112345678"
- secondcode = "12345678"
- # Check Logo rutine
- def Check_Logo():
- global watch_dog
- global EPR_HEARTBEAT
- if exists(Pattern("images/logo.png").similar(0.65)):
- # Check Logo for Watch Dog
- watch_dog = 1
- EPR_HEARTBEAT = "ON"
- else:
- watch_dog = 0
- EPR_HEARTBEAT = "OFF"
- #
- # Watch Dog
- class WatchDog(object):
- """ Watch dog example class
- The run() method will be started and it will run in the background
- until the application exits.
- """
- def __init__(self, beat, interval=1 ):
- """ Constructor
- :type interval: int
- :param interval: Check interval, in seconds
- : time.sleep(self.interval)
- """
- self.watch_dog = beat
- self.interval = interval
- thread = threading.Thread(target=self.run, args=())
- thread.daemon = True # Daemonize thread
- thread.start() # Start the execution
- def run(self):
- # Method that runs forever
- while True:
- Check_Logo()
- opc_read()
- wait(1)
- opc_write()
- #update GUI
- class Worker(threading.Thread):
- def __init__(self, val):
- self.n = 0
- self.val = val
- threading.Thread.__init__(self)
- self.setDaemon(True)
- self.start()
- def run(self):
- while True:
- # Watch Dog
- if watch_dog == 0:
- self.val.set("EP OFFLINE")
- actual_value()
- time.sleep(2)
- if watch_dog == 1:
- self.val.set("EP ONLINE")
- actual_value()
- time.sleep(2)
- # Functions
- # Copy data from OPC to GUI
- def actual_value():
- opc_read()
- GUI_EPR_Command_register.set(opc_ariana.EPR_Command_register)
- GUI_EPR_Product_barcode.set(opc_ariana.EPR_Product_barcode)
- GUI_EPR_Original_EIN_barcode.set(opc_ariana.EPR_Original_EIN_barcode)
- GUI_EPR_Product_barcode2.set(opc_ariana.EPR_Product_barcode2)
- GUI_EPR_Label_EIN_barcode.set(opc_ariana.EPR_Label_EIN_barcode)
- GUI_EPR_Naam_patient.set(opc_ariana.EPR_Naam_patient)
- GUI_EPR_Original_EIN_barcode2.set(opc_ariana.EPR_Original_EIN_barcode2)
- GUI_EPR_Bloedgroep_barcode.set(opc_ariana.EPR_Bloedgroep_barcode)
- opc_write()
- GUI_EPR_Ready1.set(opc_ariana.EPR_Ready1)
- GUI_EPR_Ready2.set(opc_ariana.EPR_Ready2)
- GUI_EPR_Code_valid.set(opc_ariana.EPR_Code_valid)
- GUI_EPR_HEARTBEAT.set(opc_ariana.EPR_HEARTBEAT)
- GUI_EPR_REASON.set(opc_ariana.EPR_REASON)
- GUI_EPR_ALARM.set(opc_ariana.EPR_ALARM)
- # Main rutine
- def main_loop():
- while exists("images/logo.png", 10):
- click(Pattern("images/product.png").similar(0.95))
- click(Pattern("images/Vrijgeven.png").similar(0.95))
- print watch_dog
- click("images/Print.png")
- click(Pattern("images/yellow_input.png").exact())
- type(firstBarcode)
- ask_loop()
- #
- # Exit rutine
- def exit_program():
- exitmsges = tkMessageBox.showinfo("Ariana","Thank you for use.")
- print exitmsges
- sys.exit()
- #
- # start window rutine
- def ask_loop():
- startmsges = tkMessageBox.askyesno("Ariana","Do you want to start?")
- print startmsges
- answer = startmsges
- # If you want start or continue then ...
- if startmsges == True:
- main_loop()
- # GUI
- #
- #Program start
- #
- Control = WatchDog(WatchDog)
- Control
- # Windo control
- def create_window():
- window_opc = tk.Toplevel(hlavni)
- window_opc.minsize(200, 200)
- window_opc.maxsize(400, 700)
- window_opc.title("Ariana OPC Control")
- # Scada to Ariana
- label = Label(window_opc, text="SCADA = > ARIANA.").grid(row=0)
- label = Label(window_opc, text="Command Register :", anchor='w').grid(row=2)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Command_register, anchor='w').grid(row=2, column=1 )
- label = Label(window_opc, text="EPR_Product_barcode :", anchor='w').grid(row=3)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Product_barcode, anchor='w').grid(row=3, column=1 )
- label = Label(window_opc, text="EPR_Original_EIN_barcode :", anchor='w').grid(row=4)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Original_EIN_barcode, anchor='w').grid(row=4, column=1 )
- label = Label(window_opc, text="EPR_Product_barcode2 :", anchor='w').grid(row=5)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Product_barcode2, anchor='w').grid(row=5, column=1 )
- label = Label(window_opc, text="EPR_Label_EIN_barcode :", anchor='w').grid(row=6)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Label_EIN_barcode, anchor='w').grid(row=6, column=1 )
- label = Label(window_opc, text="EPR_Naam_patient :", anchor='w').grid(row=7)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Naam_patient, anchor='w').grid(row=7, column=1 )
- label = Label(window_opc, text="EPR_Original_EIN_barcode2 :", anchor='w').grid(row=8)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Original_EIN_barcode2, anchor='w').grid(row=8, column=1 )
- label = Label(window_opc, text="EPR_Bloedgroep_barcode :", anchor='w').grid(row=9)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Bloedgroep_barcode, anchor='w').grid(row=9, column=1 )
- # Ariana to Scada
- label = Label(window_opc, text="").grid(row=9)
- label = Label(window_opc, text="ARIANA = > SCADA.").grid(row=10)
- label = Label(window_opc, text="EPR_Ready1 :", anchor='w').grid(row=11)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Ready1, anchor='w').grid(row=11, column=1 )
- label = Label(window_opc, text="EPR_Ready2 :", anchor='w').grid(row=12)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Ready2, anchor='w').grid(row=12, column=1 )
- label = Label(window_opc, text="EPR_Code_valid :", anchor='w').grid(row=13)
- label = Label(window_opc, text="", textvariable=GUI_EPR_Code_valid, anchor='w').grid(row=13, column=1 )
- label = Label(window_opc, text="EPR_HEARTBEAT :", anchor='w').grid(row=14)
- label = Label(window_opc, text="", textvariable=GUI_EPR_HEARTBEAT, anchor='w').grid(row=14, column=1 )
- label = Label(window_opc, text="EPR_REASON :", anchor='w').grid(row=15)
- label = Label(window_opc, text="", textvariable=GUI_EPR_REASON, anchor='w').grid(row=15, column=1 )
- label = Label(window_opc, text="EPR_ALARM :", anchor='w').grid(row=16)
- label = Label(window_opc, text="", textvariable=GUI_EPR_ALARM, anchor='w').grid(row=16, column=1 )
- write_to_scada = tk.Button(window_opc, text="Write data for Validation", command=opc_status).grid(row=18, column=0 )
- # HERE START GUI
- hlavni = Tk()
- hlavni.title("Ariana 0.1")
- hlavni.resizable(width=False, height=False)
- hlavni.minsize(200, 200)
- hlavni.maxsize(200, 200)
- nabidka = Menu(hlavni)
- hlavni.config(menu=nabidka)
- Label(hlavni, text="Ariana Online",
- fg="black",
- font="Verdana 10 bold", anchor='w').pack()
- menuSoubor = Menu(nabidka)
- nabidka.add_cascade(label="Control", menu=menuSoubor)
- menuSoubor.add_command(label=u"Start", command=ask_loop)
- menuSoubor.add_command(label=u"OPC Status", command=create_window)
- menuSoubor.add_separator()
- menuSoubor.add_command(label="Exit", command=exit_program)
- # GUI variable define datatype
- lbVal = StringVar()
- GUI_EPR_Naam_patient = StringVar()
- GUI_EPR_Command_register = StringVar()
- GUI_EPR_Product_barcode = StringVar()
- GUI_EPR_Original_EIN_barcode = StringVar()
- GUI_EPR_Product_barcode2 = StringVar()
- GUI_EPR_Label_EIN_barcode = StringVar()
- GUI_EPR_Original_EIN_barcode2 = StringVar()
- GUI_EPR_Ready1 = StringVar()
- GUI_EPR_Ready2 = StringVar()
- GUI_EPR_Code_valid = StringVar()
- GUI_EPR_HEARTBEAT = StringVar()
- GUI_EPR_REASON = StringVar()
- GUI_EPR_ALARM = StringVar()
- GUI_EPR_Bloedgroep_barcode = StringVar()
- label = Label(hlavni, text="EP STATUS...", textvariable=lbVal).pack(padx=20, pady=20)
- worker = Worker(lbVal)
- mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement