class LCondition(LItem): ''' >>> c = LCondition() >>> c <LCondition: pvName='TEST:AO' minimum=-10.0 maximum=10.0 action='Skip' description='Test condition'> >>> c.connectPv() >>> c.check() ''' def __init__(self, parent = None): """ No description here because not needed at this low level """ super(LCondition, self).__init__(parent) self.pvName = "TEST:AO" self.minimum = -10.0 self.maximum = 10.0 self.action = 'Skip' self._pv = None self._orderedAttributes = 'pvName', 'minimum', 'maximum', 'action' @LInAndOut(DEBUG & ITEMS) def connectPv(self): self._pv = LEpicsPv(self.pvName) @LInAndOut(DEBUG & ITEMS) def check(self): ''' Check that the condition is met ''' exception = None pvValue = self._pv.get() if (pvValue > self.maximum): if self.action == 'Skip' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Skip iteration') if self.action == 'Pause' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Pause requested') if self.action == 'Stop' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Stop requested') else: raise Exception('%s > %f (max)' % (self.pvName, self.maximum), 'Pv above maximum') if (pvValue < self.minimum): if self.action == 'Skip' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Skipping iteration') if self.action == 'Pause' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Pause requested') if self.action == 'Stop' : raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Stop requested') else: raise Exception('%s < %f (min)' % (self.pvName, self.minimum), 'Pv below minimum') verbose(self, " %f < { %s = %f } < %f" % (self.minimum , self.pvName, pvValue, self.maximum), 2) return(True)
class LCondition(LItem): """ >>> c = LCondition() >>> c <LCondition: pvName='TEST:AO' minimum=-10.0 maximum=10.0 action='Skip' description='Test condition'> >>> c.connectPv() >>> c.check() """ def __init__(self, parent=None): super(LCondition, self).__init__(parent) self.pvName = "TEST:AO" self.minimum = -10.0 self.maximum = 10.0 self.action = "Skip" self._pv = None self._orderedAttributes = "pvName", "minimum", "maximum", "action" @LInAndOut(DEBUG & ITEMS) def connectPv(self): self._pv = LEpicsPv(self.pvName) @LInAndOut(DEBUG & ITEMS) def check(self): """ Check that the condition is met """ exception = None pvValue = self._pv.get() if pvValue > self.maximum: if self.action == "Skip": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Skip iteration") if self.action == "Pause": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Pause requested") if self.action == "Stop": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Stop requested") else: raise Exception("%s > %f (max)" % (self.pvName, self.maximum), "Pv above maximum") if pvValue < self.minimum: if self.action == "Skip": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Skipping iteration") if self.action == "Pause": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Pause requested") if self.action == "Stop": raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Stop requested") else: raise Exception("%s < %f (min)" % (self.pvName, self.minimum), "Pv below minimum") verbose(self, " %f < { %s = %f } < %f" % (self.minimum, self.pvName, pvValue, self.maximum), 2) return True