#!/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()