#!/usr/bin/env python import hal_glib import hal from gladevcp.persistence import IniFile class PWMClass: def __init__(self,halcomp,builder,useropts): self.builder = builder self.halcomp = halcomp self.defaults = { IniFile.vars : {"laser_milliseconds" : 166}} self.ini_filename = __name__ + ".var" self.ini = IniFile(self.ini_filename,self.defaults,self.builder) self.ini.restore_state(self) self.laser_hertz_value = hal_glib.GPin(halcomp.newpin("laser_hertz_value", hal.HAL_U32, hal.HAL_OUT)) # self.halcomp["laser_hertz_value"] = self.calc_hertz() self.btn1 = self.builder.get_object("period_50") self.btn1.connect("pressed", self.on_btn50_pressed) self.btn2 = self.builder.get_object("period_100") self.btn2.connect("pressed", self.on_btn100_pressed) self.btn2 = self.builder.get_object("period_250") self.btn2.connect("pressed", self.on_btn250_pressed) self.btn2 = self.builder.get_object("period_500") self.btn2.connect("pressed", self.on_btn500_pressed) self.btn2 = self.builder.get_object("period_700") self.btn2.connect("pressed", self.on_btn700_pressed) self.btn2 = self.builder.get_object("period_900") self.btn2.connect("pressed", self.on_btn900_pressed) def calc_hertz(self): if (self.laser_milliseconds < 20): self.laser_milliseconds = 20 if (self.laser_milliseconds > 950): self.laser_milliseconds = 950 return(1000000 / self.laser_milliseconds) def on_btn50_pressed(self, pin, data = None): # this code breaks.... print self.halcomp["hm2_5i20.0.pwmgen.pwm_frequency"] # it throws this error: # Traceback (most recent call last): # File "./pwm_tab.py", line 49, in on_btn50_pressed # print self.halcomp["hm2_5i20.0.pwmgen.pwm_frequency"] # AttributeError: Pin 'hm2_5i20.0.pwmgen.pwm_frequency' does not exist self.laser_milliseconds = 50 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_btn100_pressed(self, pin, data = None): self.laser_milliseconds = 100 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_btn250_pressed(self, pin, data = None): self.laser_milliseconds = 250 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_btn500_pressed(self, pin, data = None): self.laser_milliseconds = 500 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_btn700_pressed(self, pin, data = None): self.laser_milliseconds = 700 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_btn900_pressed(self, pin, data = None): self.laser_milliseconds = 900 self.halcomp["laser_hertz_value"] = self.calc_hertz() print self.halcomp["laser_hertz_value"] def on_unix_signal(self,signum,stack_frame): print "on_unix_signal(): signal %d received, saving state" % (signum) self.ini.save_state(self) def get_handlers(halcomp,builder,useropts): return(PWMClass(halcomp,builder,useropts))