示例#1
0
    def __init__(self, pvPrefix="", mnemonic="", channel=0):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvPrefix : `string`
            LakeShore331's device base naming of the PV (Process Variable); Like DXAS:LS331;
        mnemonic : `string`
            LakeShore331's mnemonic
        """
        StandardDevice.__init__(self, mnemonic)
        self.lakeshore331 = Device(
            pvPrefix + ':',
            ('GetHEAT', 'GetHeaterRange', 'GetAPIDD', 'GetAPIDI', 'GetAPIDP',
             'GetASetPoint', 'GetBPIDD', 'GetBPIDI', 'GetBPIDP',
             'GetBSetPoint', 'GetCTempA', 'GetCTempB', 'GetKTempA',
             'GetKTempB', 'SetHeaterRange', 'SetAPIDD', 'SetAPIDI', 'SetAPIDP',
             'SetASetPoint', 'SetBPIDD', 'SetBPIDI', 'SetBPIDP',
             'SetBSetPoint', 'GetCmode', 'SetCmode'))
        self.ls331_control = Device(pvPrefix + ':CONTROL:',
                                    ['SetAPID', 'SetBPID', 'Trigger'])

        if (channel == 1):
            self.ls331_channel = LakeShore_t.Channel_B
        else:
            # Default
            self.ls331_channel = LakeShore_t.Channel_A
示例#2
0
    def set_prefix(self, prefix):
        if prefix.endswith(':'): prefix = prefix[:-1]
        if prefix.endswith(':image1'): prefix = prefix[:-7]
        if prefix.endswith(':cam1'): prefix = prefix[:-5]
        self.prefix = prefix

        self.ad_img = Device(prefix + ':image1:',
                             delim='',
                             attrs=self.img_attrs)
        self.ad_cam = Device(prefix + ':cam1:', delim='', attrs=self.cam_attrs)

        self.title.SetLabel("Epics AreaDetector: %s" % prefix)
        self.connect_pvs()
示例#3
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`
        
        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Power supply mnemonic
        """

        super().__init__(mnemonic)

        self.pvName = pvName
        self.voltage = Device(pvName + ':VOLTAGE:', self.RANGE)
        self.current = Device(pvName + ':CURRENT:', self.RANGE)
        self.program = Device(pvName + ':PROGRAM:', self.PROGRAM)
        self.programVoltage = Device(pvName + ':PROGRAM:VOLTAGE:',
                                     self.PROGRAM_SUB)
        self.programCurrent = Device(pvName + ':PROGRAM:CURRENT:',
                                     self.PROGRAM_SUB)
        self.resetPV = PV(pvName + ':RESET')
        self.mode = Device(pvName + ':MODE:', ['SET', 'GET', 'GET.PROC'])
        self.operationFlag = Device(
            pvName + ':', ['GET:OPERATION:FLAG', 'GET:OPERATION:FLAG.PROC'])
        self.timePV = PV(pvName + ':PROGRAM:TIME:ADD')
        self.error = Device(pvName + ':',
                            ['ERROR', 'ERROR.PROC', 'ERROR:TEXT'])

        self.defaults()

        # Operation mode (voltage x current) is cached, so get it immediatelly
        self.procAndGet(self.mode, 'GET')
示例#4
0
    def set_prefix(self, prefix):
        if prefix.endswith(':'): prefix = prefix[:-1]
        if prefix.endswith(':image1'): prefix = prefix[:-7]
        if prefix.endswith(':cam1'): prefix = prefix[:-5]
        self.prefix = prefix

        self.ad_img = Device(prefix + ':image1:',
                             delim='',
                             attrs=self.img_attrs)
        self.ad_cam = Device(prefix + ':cam1:', delim='', attrs=self.cam_attrs)

        self.config_filesaver(prefix, self.format)

        w, h = self.GetImageSize()
        self.cam_name = prefix
示例#5
0
 def __init__(self, pvName, mnemonic):
     StandardDevice.__init__(self, mnemonic)
     self.pvName = pvName
     self.modem = Device(pvName + ':FONE:',
                         ('discar.PROC', 'audio', 'numero', 'discar.VALA'))
     self._status = self.getStatus()
     self.modem.add_callback('discar.VALA', self.onStatusChange)
 def set_prefix(self, prefix):
     self.prefix = prefix
     self.ad_img = Device(prefix + ':image1:',
                          delim='',
                          attrs=self.img_attrs)
     self.title.SetLabel("Fly2AD: %s" % prefix)
     self.connect_pvs()
示例#7
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Temperature controller mnemonic
        """
        super().__init__(mnemonic)

        self.device = Device(pvName + ':', ['termopar', 'target', 'status', 'stepNum',
                             'programTable', 'programming', 'run', 'stop', 'advance',
                             'setPatternCount', 'timeScale', 'level1', 'reset', 'pause',
                             'sendCommand', 'pidtable', 'numPIDElements', 'paused', 'getP',
                             'getI', 'getD', 'power'])

        self.programmingDone = Event()
        self.newTemperature = Event()
        self.newStep = Event()
        self.device.add_callback('programming', self.onProgrammingChange)
        self.device.add_callback('termopar', self.onTemperatureChange)
        self.device.add_callback('stepNum', self.onStepChange)
        self.timeScaleCache = self.device.get('timeScale')

        self.pvName = pvName
        self.rate = 5
        self.presetDone = False
示例#8
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`
        
        Parameters
        ----------
        pvName : `string`
            Motor's base naming of the PV (Process Variable)
        mnemonic : `string`
            Motor's mnemonic
        """
        StandardDevice.__init__(self, mnemonic)
        self.pvName = pvName

        self.pvType = PV(pvName + ".RTYP", connection_timeout=3)

        if (self.pvType.status is None):
            raise Exception("Epics PV " + pvName +
                            " seems to be offline or not reachable")

        if (self.pvType.get() != "motor"):
            raise Exception(pvName + " is not an Epics Motor")

        self.motor = Device(
            pvName + '.',
            ('RBV', 'VAL', 'DRBV', 'DVAL', 'RLV', 'RVAL', 'RRBV', 'STOP',
             'MOVN', 'LLS', 'HLS', 'SSET', 'SUSE', 'SET', 'VELO', 'EGU',
             'DMOV', 'STUP', 'DESC', 'BDST', 'HLM', 'LLM', 'DHLM', 'DLLM',
             'VOF', 'FOF', 'OFF', 'DIR', 'LVIO', 'HOMF', 'HOMR'))

        self.motor.add_callback('DMOV', self.onStatusChange)
        self._moving = self.isMovingPV()

        self.motorDesc = self.getDescription()
示例#9
0
    def __init__(self, pvName, mnemonic, timeBased=False):
        """
        **Constructor**
        To use this Keithley Class you must pass the PV (Process Variable) prefix.

            .. Note::
                e.g.: SXS:K6514

        Examples
        --------

        >>> from KeithleyClass import *
        >>> name = Keithley('SOL:K6514', 'k1')

        """
        Keithley6514.__init__(self, pvName, mnemonic)
        self.pvName = pvName
        self.timeBased = timeBased
        self.keithley = Device(
            pvName + ':',
            ('GetMed', 'SetMed', 'GetMedRank', 'SetMedRank', 'GetAver',
             'SetAver', 'GetAverCoun', 'SetAverCoun', 'GetNPLC', 'SetNPLC',
             'GetAutoZero', 'SetAutoZero', 'GetZeroCheck', 'SetZeroCheck',
             'GetAverTCon', 'SetAverTCon', 'GetRange', 'SetRange',
             'GetZeroCor', 'SetZeroCor', 'GetAutoCurrRange', 'SetAutoCurrRange'
             'Count', 'ContinuesMode', 'CNT', 'OneMeasure'))

        self.pvMeasure = PV(pvName + ':' + 'Measure', auto_monitor=False)
        self._counting = self.isCountingPV()
        self.keithley.add_callback('CNT', self.onStatusChange)
示例#10
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Temperature controller mnemonic
        """
        super().__init__(mnemonic)

        self.device = Device(pvName + ':', ['PV:RBV', 'SP','RR', 'RR:RBV',
        'WSP:RBV', 'O' , 'O:RBV', 'MAN'])

        self.newTemp = Event()
        self.pvName = pvName
示例#11
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Temperature controller mnemonic
        """

        super().__init__(mnemonic)

        self.device = Device(pvName + ':', ['READ_TEMP_LOOP_HSET', 'READ_TEMP_LOOP_TSET','READ_TEMP_SIG_TEMP',
        'READ_RAMP_TEMP','READ_LEVEL_METER','READ_SAMPLE_FLOW','READ_SHIELD_FLOW',
        'SET_RAMP_TEMP', 'SET_TEMP_LOOP_TSET'])

        self.newTemp = Event()
        self.pvName = pvName
示例#12
0
    def __init__(self, mnemonic, pvName, axis):

        super().__init__(mnemonic)
        self.hexapode = Device(
            pvName + ':',
            ('STATE#PANEL:SET', 'STATE#PANEL:GET', 'STATE#PANEL:BUTTON',
             'MOVE#PARAM:CM', 'MOVE#PARAM:X', 'MOVE#PARAM:Y', 'MOVE#PARAM:Z',
             'MOVE#PARAM:RX', 'MOVE#PARAM:RY', 'MOVE#PARAM:RZ', ':POSUSER:X',
             ':POSUSER:Y', ':POSUSER:Z', ':POSUSER:RX', ':POSUSER:RY',
             ':POSUSER:RZ', ':POSMACH:X', ':POSMACH:Y', ':POSMACH:Z',
             ':POSMACH:RX', ':POSMACH:RY', ':POSMACH:RZ', 'CFG#CS:1',
             'CFG#CS:2', 'STATE#POSVALID?', 'CFG#CS?:1', 'CFG#CS?:2',
             'CFG#CS?:3', 'CFG#CS?:4', 'CFG#CS?:5', 'CFG#CS?:6', 'CFG#CS?:7',
             'CFG#CS?:8', 'CFG#CS?:9', 'CFG#CS?:10', 'CFG#CS?:11',
             'CFG#CS?:12', 'CFG#CS?:13'))
        self.axis = axis
        self.axis_dic = {"X": 1, "Y": 2, "Z": 3, "RX": 4, "RY": 5, "RZ": 6}
        self.axis_number = self.axis_dic[self.axis]
        self.rbv = PV(pvName + ':' + 'POSUSER:'******'POSUSER:'******'POSUSER:'******'POSUSER:' + self.axis + ".SCAN", 9)
示例#13
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Temperature controller mnemonic
        """
        super().__init__(mnemonic)
        self.pvName = pvName

        self.lauda = Device(pvName + ':', [
            'BLEVEL', 'BOVERTEMP', 'BPOWER', 'BSP', 'BSTATS', 'BTEMP', 'BTN',
            'BTHERMOSTATS', 'WSP', 'WSTART', 'ETEMP', 'WPUMP', 'WSTOP', 'WTN'
        ])
        self.newTemperature = Event()
        self.lauda.add_callback('BTEMP', self.onTemperatureChange)
        # Skip initial callback
        self.newTemperature.wait(1)
示例#14
0
    def __init__(self, pvName, mnemonic):
        """
        **Constructor**
        See :class:`py4syn.epics.StandardDevice`

        Parameters
        ----------
        pvName : `string`
            Power supply base naming of the PV (Process Variable)
        mnemonic : `string`
            Temperature controller mnemonic
        """
        super().__init__(mnemonic)
        self.pvName = pvName

        self.linkam = Device(pvName + ':', ['setRate', 'setLimit', 'pending', 'temp',
                                            'stop', 'setSpeed', 'pumpMode', 'status',
                                            'start'])
        self.done = Event()
        self.newTemperature = Event()
        self.pending = bool(self.linkam.get('pending'))
        self.setRate(5)
        self.linkam.add_callback('pending', self.onPendingChange)
        self.linkam.add_callback('temp', self.onTemperatureChange)
示例#15
0
    def __init__(self, prefix):
        self.device = Device(prefix, delim=':', attrs=self.attrs)

        time.sleep(0.1)
        self.read_pvfile()
示例#16
0
 def connect_pvs(self, prefix):
     prefix = fix_ad_prefix(prefix)
     self.adcam = Device(prefix, delim='', attrs=self.ad_attrs)
     self.adcam.add_callback('cam1:ArrayCounter_RBV', self.onNewImage)
 def set_prefix(self, prefix):
     self.prefix = prefix
     self.ad_img = Device(prefix, delim='', attrs=self.img_attrs)
     w, h = self.GetImageSize()
     self.cam_name = prefix