diff options
Diffstat (limited to 'dome_control.py')
| -rwxr-xr-x | dome_control.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/dome_control.py b/dome_control.py new file mode 100755 index 0000000..e1277b4 --- /dev/null +++ b/dome_control.py @@ -0,0 +1,98 @@ +#!/usr/bin/python +#TJR 10-02-13 + +#version 1.0 : initial version + +import pygtk +pygtk.require('2.0') +import gtk, gobject +from socket import * + +from pyfirmata import Arduino, util + +labels=["guide\nfocus\nin","guide\nfocus\nout","\n4","\n5","\n6","\n7","\nheat","\ndeHum","\nlight","flat\nfield","\n12","\n13"]; +arduino=Arduino("/dev/ttyUSB0") + + +class arduinobtn(gtk.ToggleButton): + def __init__(self, label,num): + super(arduinobtn, self).__init__(label) + self.num=num + self.set_size_request(60,60) + self.connect("clicked", self.toggle, "click") + self.time=0 + def toggle(self,widget,data): + arduino.digital[self.num].write(self.get_active()) + if self.time>0.0 and self.get_active(): + if self.num==2 or self.num==3: + dome.alterFocus(((self.num*2)-5)*self.time) + gobject.timeout_add(int(self.time*1000), self.cancel) + def setTime(self,entry): + try: + self.time=float(entry.get_text()) + except: + self.time=0.0 + print "button",self.num,"set to",self.time + def cancel(self): + self.set_active(False) + arduino.digital[self.num].write(0) + print "cancelled button",self.num + return False; + + +class domecontrol: + def delete_event(self, widget, event, data=None): + gtk.main_quit() + return False + + def __init__(self): + self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) + self.window.set_title("Dome mains control") + self.window.connect("delete_event", self.delete_event) + self.window.set_border_width(10) + + self.box = gtk.VBox(False, 0) + + self.totalFocus=0.0 + self.focusLabel=gtk.Label() + self.focusLabel.set_text("total focus:"+str(self.totalFocus)) + self.focusLabel.set_alignment(0.0,0.0) + self.box.pack_start(self.focusLabel, True, True, 0) + self.focusLabel.show() + + self.boxes=[] + for i in range (0,4): + self.boxes.append(gtk.HBox(False, 0)) + self.buttons=[] + self.texts=[] + for i in range (0,12): + self.buttons.append(arduinobtn(labels[i],i+2)) + self.boxes[(i/6)*2].pack_start(self.buttons[i], True, True, 0) + self.buttons[i].show() + self.texts.append(gtk.Entry(5)) + self.texts[i].set_editable(True) + self.texts[i].connect("activate", self.buttons[i].setTime) + self.texts[i].set_width_chars(5) + self.boxes[((i/6)*2)+1].pack_start(self.texts[i], True, True, 0) + self.texts[i].show() + + for i in range (0,4): + self.boxes.append(gtk.HBox(False, 0)) + self.boxes[i].show() + self.box.pack_start(self.boxes[i], True, True, 0) + + self.window.add(self.box) + self.box.show() + self.window.show() + def alterFocus(self,amount): + self.totalFocus+=amount + self.focusLabel.set_text("total focus:"+str(self.totalFocus)) + + +def main(): + gtk.main() + +dome = domecontrol() + +if __name__ == "__main__": + main() |
