rendered paste body#!/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))