コード例 #1
0
ファイル: items.py プロジェクト: emayssat/epics-opis
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)
コード例 #2
0
ファイル: items.py プロジェクト: emayssat/python-eggs
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