All pastes #113385 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-08-03 15:15 UTC
rendered paste body
#!/usr/bin/env python2.4

"""

relay board control panel app

"""

import string
import os
import wx

class RelayController:
    "store state and change state of relay sistem"
    def __init__(self, relay):
        self.relaylist = [0 for x in xrange(8)]
        self.relayboard = relay
    def resetstate(self):
        self.relaylist = [0 for x in xrange(8)]
    def printstate(self):
        relaysequence = ''
        for i in range(8):
            relaysequence += `self.relaylist[i]`
        print relaysequence
        print int(relaysequence, 2)
    def change(self, input):
        input -= 1
        if self.relaylist[input] == 1:
            newval = 0
        else:
            newval = 1
        self.relaylist[input] = newval
        relaysequence = ''
        for i in range(8):
            relaysequence += `self.relaylist[i]`
        relaystate = int(relaysequence, 2)
        execute = "k8055 -p:%d -a1:0 -a2:0 -d:%d" % (self.relayboard,relaystate)
        os.system(execute)

board1 = RelayController(0)
board1.resetstate()

class ControlPanel(wx.Panel):
    """This Panel hold simple buttons, but doesn't really do anything."""
    def __init__(self, Parent, *args, **kwargs):
        """Create the ControlPanel."""
        wx.Panel.__init__(self, Parent, *args, **kwargs)
        self.Parent = Parent

        R1Btn = wx.Button(self, label="Relay1")
        R1Btn.Bind(wx.EVT_BUTTON, self.rchange(1) )
        R2Btn = wx.Button(self, label="Relay2")
        R2Btn.Bind(wx.EVT_BUTTON, self.rchange(2) )
        R3Btn = wx.Button(self, label="Relay3")
        R3Btn.Bind(wx.EVT_BUTTON, self.rchange(3) )
        R4Btn = wx.Button(self, label="Relay4")
        R4Btn.Bind(wx.EVT_BUTTON, self.rchange(4) )
        R5Btn = wx.Button(self, label="Relay5")
        R5Btn.Bind(wx.EVT_BUTTON, self.rchange(5) )
        R6Btn = wx.Button(self, label="Relay6")
        R6Btn.Bind(wx.EVT_BUTTON, self.rchange(6) )
        R7Btn = wx.Button(self, label="Relay7")
        R7Btn.Bind(wx.EVT_BUTTON, self.rchange(7) )
        R8Btn = wx.Button(self, label="Relay8")
        R8Btn.Bind(wx.EVT_BUTTON, self.rchange(8) )
        MsgBtn = wx.Button(self, label="About")
        MsgBtn.Bind(wx.EVT_BUTTON, self.OnMsgBtn )

        Sizer = wx.BoxSizer(wx.HORIZONTAL)
        Sizer.Add(R1Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R2Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R3Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R4Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R5Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R6Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R7Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(R8Btn, 0, wx.ALIGN_CENTER|wx.ALL, 5)
        Sizer.Add(MsgBtn, 0, wx.ALIGN_CENTER|wx.ALL, 5)

        self.SetSizerAndFit(Sizer)

    def DoNothing(self, event=None):
        """Do nothing."""
        pass
    def rchange(self, input):
        """change relay board input"""
        board1.change(input)
    def OnMsgBtn(self, event=None):
        """Bring up a wx.MessageDialog with a useless message."""
        dlg = wx.MessageDialog(self,
                               message='System Control Panel for commercial PAGA designed and developed by Samuel Mathieson. Problems? Comments? Suggestions? samuel@mathiesonelco.com. If your suggestion is used you get a free software upgrade!',
                               caption='About',
                               style=wx.OK|wx.ICON_INFORMATION
                               )
        dlg.ShowModal()
        dlg.Destroy()

class ControlFrame(wx.Frame):
    """Main Frame holding the Panel."""
    def __init__(self, *args, **kwargs):
        """Create the ControlFrame."""
        wx.Frame.__init__(self, *args, **kwargs)

        # Build the menu bar
        MenuBar = wx.MenuBar()
        FileMenu = wx.Menu()
        item = FileMenu.Append(wx.ID_EXIT, text="&Quit")
        self.Bind(wx.EVT_MENU, self.OnQuit, item)
        resetitem = FileMenu.Append(wx.ID_EXIT, text="&Reset State")
        self.Bind(wx.EVT_MENU, self.rreset(), resetitem)
        MenuBar.Append(FileMenu, "&File")
        self.SetMenuBar(MenuBar)

        # Add the Widget Panel
        self.Panel = ControlPanel(self)
        self.Fit()

    def OnQuit(self, event=None):
        """Exit application."""
        self.Close()
    def rreset(self, event=None):
        """reset relay board"""
        board1.resetstate()
if __name__ == '__main__':
    app = wx.App()
    frame = ControlFrame(None, title="System Control Panel")
    frame.Show()
    app.MainLoop()