コード例 #1
0
ファイル: gateway.py プロジェクト: rezeik/PyLaz
class Frame(Tk.Frame):
    def __init__(self, master=None):
        global start_flag
        Tk.Frame.__init__(self, master)

        self.gw = Gateway()

        #### COMMAND DISPLAY
        self.panid = Tk.IntVar()
        self.panid = 0xABCD
        self.PanidDisp = Tk.StringVar()
        self.PanidDisp.set(hex(self.panid))
        self.master.title('Lazurite Gateway')

        self.row_offset = 0

        # DISPLAY LOGO
        #        f_command = Tk.Frame(self, relief=Tk.RIDGE, bd=4)
        f_command = Tk.Frame(self, bd=4)
        self.image = Tk.PhotoImage(file=LOGO)
        self.logoBackGround = Tk.Label(f_command,
                                       image=self.image,
                                       bg='gray',
                                       relief=Tk.RIDGE,
                                       anchor=Tk.W)
        f_cb = Tk.Frame(self, bd=4)
        # DISPLAY Channel
        self.ch = 36
        self.chNumberDisp = Tk.IntVar()
        self.chNumberDisp.set(self.ch)

        self.l_ch = Tk.Label(f_command,
                             text="Ch",
                             relief=Tk.RIDGE,
                             anchor=Tk.W)
        self.t_ch = Tk.Entry(f_command,
                             textvariable=self.chNumberDisp,
                             width=10,
                             relief=Tk.SUNKEN,
                             bd=2,
                             state=Tk.NORMAL)

        self.b_chIncButton = Tk.Button(f_command,
                                       font=('Helvetica', '6'),
                                       text='+',
                                       command=self.chInc)
        self.b_chDecButton = Tk.Button(f_command,
                                       font=('Helvetica', '6'),
                                       text='-',
                                       command=self.chDec)

        # DISPLAY Power
        self.pwr = (1, 20)

        self.l_pwr = Tk.Label(f_command,
                              text="Pwr",
                              relief=Tk.RIDGE,
                              anchor=Tk.W)
        self.b_pwr = zz.Combobox(f_command,
                                 value=self.pwr,
                                 width=10,
                                 state="readonly")
        self.b_pwr.current(1)

        # DISPLAY Rate
        self.rate = (50, 100)

        self.l_rate = Tk.Label(f_command,
                               text="Rate",
                               relief=Tk.RIDGE,
                               anchor=Tk.W)
        self.b_rate = zz.Combobox(f_command,
                                  value=self.rate,
                                  width=10,
                                  state="readonly")
        self.b_rate.current(1)

        # DISPLAY PANID
        self.l_panid = Tk.Label(f_command,
                                text="PANID",
                                relief=Tk.RIDGE,
                                anchor=Tk.W)
        self.t_panid = Tk.Entry(f_command,
                                textvariable=self.PanidDisp,
                                width=10,
                                relief=Tk.SUNKEN,
                                bd=2,
                                state=Tk.NORMAL)

        # DISPLAY Start/Stop Button
        self.b_start = Tk.Button(f_command, text='Start', command=self.Start)
        self.b_stop = Tk.Button(f_command,
                                text='Stop',
                                command=self.Stop,
                                state=Tk.DISABLED)

        ## Option check buttom
        self.ign = Tk.BooleanVar()
        self.c_ign = Tk.Checkbutton(f_command,
                                    text="Ignore address",
                                    variable=self.ign)

        # DISPLAY display mode
        global mac_menu
        global mac_combobox
        global mac_mode

        mac_combobox = zz.Combobox(f_command,
                                   value=mac_menu,
                                   width=20,
                                   state="readonly")
        mac_combobox.current(mac_mode)

        ## InfoCorpus
        #        self.InfoCorpus= Tk.PhotoImage(file='InfoCorpusLogo.gif')
        #        self.ImageInforcopus = Tk.Label(f_command, image=self.InfoCorpus, bg='gray', relief=Tk.RIDGE)

        # DISPLAY save log buttom
        self.b_savelog = Tk.Button(f_command,
                                   text='SAVE',
                                   command=self.Save,
                                   state=Tk.NORMAL)
        self.b_clearlog = Tk.Button(f_command,
                                    text='CLEAR LOG',
                                    command=self.Clear,
                                    state=Tk.NORMAL)

        ## Command Frame Location
        self.logoBackGround.grid(row=0, column=0)
        self.b_start.grid(row=0, column=4)
        self.b_stop.grid(row=0, column=5)

        self.l_ch.grid(row=2, column=0, sticky=Tk.W + Tk.E, pady=10)
        self.t_ch.grid(row=2, column=1, padx=20, sticky=Tk.W)
        self.b_chIncButton.grid(row=2, column=4, sticky=Tk.W + Tk.E + Tk.S)
        self.b_chDecButton.grid(row=2, column=5, sticky=Tk.W + Tk.E + Tk.S)

        self.l_pwr.grid(row=4, column=0, sticky=Tk.W + Tk.E, pady=10)
        self.b_pwr.grid(row=4, column=1, padx=20, sticky=Tk.W)

        self.l_rate.grid(row=5, column=0, sticky=Tk.W + Tk.E, pady=10)
        self.b_rate.grid(row=5, column=1, padx=20, sticky=Tk.W)

        self.l_panid.grid(row=6, column=0, sticky=Tk.W + Tk.E, pady=10)
        self.t_panid.grid(row=6, column=1, padx=20, sticky=Tk.W)
        '''self.c_ign.grid(row=0,column=6,sticky=Tk.W + Tk.E,padx=20)
        mac_combobox.grid(row=5,column=6,padx=20)
        '''
        self.b_savelog.grid(row=6, column=6, padx=20)
        self.b_clearlog.grid(row=6, column=7, padx=20)

        #        self.ImageInforcopus.grid(row=0, column=8)

        ## LOG WINDOW
        global XSCALL
        global YSCALL
        f_log = Tk.Frame(self)
        #        self.logText = Tk.StringVar()
        #        self.logText.set("")
        self.s_logtext = ScrolledText(f_log, width=XSCALL, height=YSCALL)
        self.s_logtext.grid(sticky=Tk.W + Tk.E)
        self.s_logtext.write = self.write
        sys.stdout = self.s_logtext

        ## FRAME Location
        f_command.pack()
        f_log.pack()

    def write(self, str):
        self.s_logtext.insert(Tk.END, str)
        time.sleep(0.001)
        self.s_logtext.yview_scroll(str.count("\n") + 1, "units")

    def Start(self):
        global start_flag

        ## update parameters
        self.ch = self.chNumberDisp.get()
        self.pwr = int(self.b_pwr.get())
        self.rate = int(self.b_rate.get())
        self.panid = int(self.PanidDisp.get(), 0)

        ## parameter check
        if self.ch < 24 or self.ch > 61:
            print("ch number error")
            return

        if self.pwr != 1 and self.pwr != 20:
            print("power error =", self.pwr)
            return

        if self.rate != 50 and self.rate != 100:
            print("rate error=", self.rate)
            return

        if self.panid <= 0 or self.panid > 0xffff:
            print("PANID error")
            return

        ## Start Gateway
        self.b_start.configure(state=Tk.DISABLED)
        self.b_stop.configure(state=Tk.NORMAL)
        self.b_chIncButton.configure(state=Tk.DISABLED)
        self.b_chIncButton.configure(state=Tk.DISABLED)
        self.logoBackGround.configure(bg=BLUE)
        self.b_savelog.configure(state=Tk.DISABLED)
        start_flag = True
        self.init_gateway()

    def Stop(self):
        global start_flag
        self.b_start.configure(state=Tk.NORMAL)
        self.b_stop.configure(state=Tk.DISABLED)
        self.b_chIncButton.configure(state=Tk.NORMAL)
        self.b_chIncButton.configure(state=Tk.NORMAL)
        self.logoBackGround.configure(bg='gray')
        self.b_savelog.configure(state=Tk.NORMAL)

        start_flag = False
        self.gw.close_driver()

    def chInc(self):
        self.ch = self.chNumberDisp.get()
        if self.ch < 61 and self.ch >= 24:
            self.ch += 1
        elif self.ch < 24:
            self.ch = 24
        else:
            self.ch = 61
        self.chSet()

    def chDec(self):
        self.ch = self.chNumberDisp.get()
        if self.ch <= 61 and self.ch > 24:
            self.ch -= 1
        elif self.ch > 61:
            self.ch = 61
        else:
            self.ch = 24
        self.chSet()

    def chSet(self):
        self.chNumberDisp.set(self.ch)

    def Clear(self):
        self.s_logtext.delete(1.0, Tk.END)

    def Save(self):
        filename = Tk.filedialog.asksaveasfile(filetypes=[('Log Files',
                                                           ('.log'))])
        if filename != "":
            logfile = open(filename.name, mode='w')
            log_data = self.s_logtext.get(1.0, Tk.END)
            logfile.write(log_data)
            logfile.close()
        return

    def init_gateway(self):
        if self.ign.get():
            self.mode = 1
        else:
            self.mode = 0
        self.gw.start_receive(self.ch, self.panid, self.rate, self.pwr)

    def close(self):
        if self.dvice_open:
            self.gw.close_driver()
コード例 #2
0
ファイル: gateway6.py プロジェクト: LAPIS-Lazurite/SnapShot
class Frame(Tk.Frame):
    def __init__(self, master=None):
        global start_flag
        Tk.Frame.__init__(self, master)

        self.gw = Gateway()

#### COMMAND DISPLAY
        self.panid= Tk.IntVar()
        self.panid=0xABCD
        self.PanidDisp= Tk.StringVar()
        self.PanidDisp.set(hex(self.panid))
        self.master.title('Lazurite Gateway')

        self.row_offset = 0

# DISPLAY LOGO
#        f_command = Tk.Frame(self, relief=Tk.RIDGE, bd=4)
        f_command = Tk.Frame(self,  bd=4)
        self.image= Tk.PhotoImage(file=LOGO)
        self.logoBackGround=Tk.Label(f_command, image=self.image, bg='gray', relief=Tk.RIDGE, anchor=Tk.W)
        f_cb = Tk.Frame(self,bd=4)
# DISPLAY Channel
        self.ch =33
        self.chNumberDisp = Tk.IntVar()
        self.chNumberDisp.set(self.ch)

        self.l_ch = Tk.Label(f_command,text="Ch", relief=Tk.RIDGE, anchor=Tk.W)
        self.t_ch = Tk.Entry(f_command,textvariable=self.chNumberDisp,width=10, relief=Tk.SUNKEN, bd=2, state=Tk.NORMAL)
        
        self.b_chIncButton = Tk.Button(f_command, font=('Helvetica', '6'), text='+', command=self.chInc)
        self.b_chDecButton = Tk.Button(f_command, font=('Helvetica', '6'), text='-', command=self.chDec)

# DISPLAY Power
        self.pwr = (1,20)
        
        self.l_pwr = Tk.Label(f_command,text="Pwr", relief=Tk.RIDGE, anchor=Tk.W)
        self.b_pwr = zz.Combobox(f_command,value=self.pwr, width=10,state="readonly")
        self.b_pwr.current(1)
        
# DISPLAY Rate
        self.rate = (50,100)

        self.l_rate = Tk.Label(f_command,text="Rate", relief=Tk.RIDGE, anchor=Tk.W)
        self.b_rate = zz.Combobox(f_command,value=self.rate, width=10,state="readonly")
        self.b_rate.current(1)



# DISPLAY PANID
        self.l_panid = Tk.Label(f_command,text="PANID", relief=Tk.RIDGE, anchor=Tk.W)
        self.t_panid = Tk.Entry(f_command,textvariable=self.PanidDisp,width=10, relief=Tk.SUNKEN, bd=2, state=Tk.NORMAL)

# DISPLAY Start/Stop Button         
        self.b_start = Tk.Button(f_command, text='Start', command=self.Start)
        self.b_stop = Tk.Button(f_command, text='Stop', command=self.Stop, state=Tk.DISABLED)


## Option check buttom
        self.ign = Tk.BooleanVar()
        self.c_ign = Tk.Checkbutton(f_command,text="Ignore address",variable=self.ign)

# DISPLAY display mode
        global mac_menu
        global mac_combobox
        global mac_mode

        mac_combobox=zz.Combobox(f_command,value=mac_menu,width=20,state="readonly")
        mac_combobox.current(mac_mode)

## InfoCorpus
#        self.InfoCorpus= Tk.PhotoImage(file='InfoCorpusLogo.gif')
#        self.ImageInforcopus = Tk.Label(f_command, image=self.InfoCorpus, bg='gray', relief=Tk.RIDGE)

        
# DISPLAY save log buttom
        self.b_savelog=Tk.Button(f_command, text='SAVE', command=self.Save, state=Tk.NORMAL)
        self.b_clearlog=Tk.Button(f_command, text='CLEAR LOG', command=self.Clear, state=Tk.NORMAL)

        self.b_view=Tk.Button(f_command, text='VIEW', command=self.View, state=Tk.NORMAL)

## Command Frame Location
        self.logoBackGround.grid(row=0,column=0)
        self.b_start.grid(row=0, column=4)
        self.b_stop.grid(row=0, column=5)

        self.l_ch.grid(row=2,column=0,sticky=Tk.W + Tk.E,pady=10)
        self.t_ch.grid(row=2,column=1,padx=20,sticky=Tk.W)
        self.b_chIncButton.grid(row=2, column=4, sticky=Tk.W + Tk.E + Tk.S)
        self.b_chDecButton.grid(row=2, column=5, sticky=Tk.W + Tk.E + Tk.S)

        self.l_pwr.grid(row=4,column=0,sticky=Tk.W + Tk.E,pady=10)
        self.b_pwr.grid(row=4,column=1,padx=20,sticky=Tk.W)

        self.l_rate.grid(row=5,column=0,sticky=Tk.W + Tk.E,pady=10)
        self.b_rate.grid(row=5,column=1,padx=20,sticky=Tk.W)

        self.l_panid.grid(row=6,column=0,sticky=Tk.W + Tk.E,pady=10)
        self.t_panid.grid(row=6,column=1,padx=20,sticky=Tk.W)

        self.c_ign.grid(row=0,column=6,sticky=Tk.W + Tk.E,padx=20)
        mac_combobox.grid(row=5,column=6,padx=20)
        self.b_savelog.grid(row=6,column=6,padx=20)
        self.b_clearlog.grid(row=6,column=7,padx=20)
        self.b_view.grid(row=6,column=8,padx=20)
        
#        self.ImageInforcopus.grid(row=0, column=8)

## LOG WINDOW
        global XSCALL
        global YSCALL
        f_log = Tk.Frame(self)
#        self.logText = Tk.StringVar()
#        self.logText.set("")
        self.s_logtext=ScrolledText(f_log,width=XSCALL, height=YSCALL)
        self.s_logtext.grid(sticky=Tk.W+Tk.E)
        self.s_logtext.write = self.write
        sys.stdout = self.s_logtext

## FRAME Location
        f_command.pack()
        f_log.pack()

    def write(self,str):
        self.s_logtext.insert(Tk.END,str)
        time.sleep(0.001)
        self.s_logtext.yview_scroll(str.count("\n") + 1, "units")

    def Start(self):
        global start_flag

        ## update parameters
        self.ch = self.chNumberDisp.get()
        self.pwr = int(self.b_pwr.get())
        self.rate = int(self.b_rate.get())
        self.panid = int(self.PanidDisp.get(),0)

        ## parameter check
        if self.ch < 24 or self.ch > 61:
            print("ch number error")
            return

        if self.pwr != 1 and self.pwr != 20:
            print("power error =",self.pwr)
            return

        if self.rate != 50 and self.rate != 100:
            print("rate error=",self.rate)
            return

        if self.panid <= 0 or self.panid > 0xffff:
            print("PANID error")
            return
        
        ## Start Gateway
        self.b_start.configure(state=Tk.DISABLED)
        self.b_stop.configure(state=Tk.NORMAL)
        self.b_chIncButton.configure(state=Tk.DISABLED)
        self.b_chIncButton.configure(state=Tk.DISABLED)
        self.logoBackGround.configure(bg=BLUE)
        self.b_savelog.configure(state=Tk.DISABLED)
        start_flag = True
        self.init_gateway()

        
    def Stop(self):
        global start_flag
        self.b_start.configure(state=Tk.NORMAL)
        self.b_stop.configure(state=Tk.DISABLED)
        self.b_chIncButton.configure(state=Tk.NORMAL)
        self.b_chIncButton.configure(state=Tk.NORMAL)
        self.logoBackGround.configure(bg='gray')
        self.b_savelog.configure(state=Tk.NORMAL)

        start_flag = False
        self.gw.close_driver()
        self.gw.remove_driver()

        
    def chInc(self):
        self.ch = self.chNumberDisp.get()
        if self.ch < 61 and self.ch >= 24:
            self.ch += 1
        elif self.ch < 24:
            self.ch = 24
        else:
            self.ch = 61
        self.chSet()
            
    def chDec(self):
        self.ch = self.chNumberDisp.get()
        if self.ch <= 61 and self.ch > 24:
            self.ch -= 1
        elif self.ch > 61:
            self.ch = 61
        else:
            self.ch = 24
        self.chSet()
        
    def chSet(self):
        self.chNumberDisp.set(self.ch)

    def Clear(self):
        self.s_logtext.delete(1.0,Tk.END)

    def Save(self):
        filename = Tk.filedialog.asksaveasfile(filetypes = [('Log Files', ('.log'))])
        if filename != "":
            logfile = open(filename.name,mode = 'w')
            log_data = self.s_logtext.get(1.0,Tk.END)
            logfile.write(log_data)
            logfile.close()
        return

    def View(self):
        print ("GADGADGADGADGA")
        view_file = open("/home/pi/python/camera.jpeg",mode = 'rb')
#	for i in range(1,1000):
#       	print (view_file.read())
    
    def init_gateway(self):
        if self.ign.get():
            self.mode = 1
        else:
            self.mode = 0
        self.gw.load_driver(self.ch,self.pwr,self.rate,self.panid,self.mode)
        self.gw.open_driver()

    def close(self):
        if self.dvice_open:
            self.gw.close_driver()
            self.gw.remove_driver()