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()