made the epics enum wrapper working and put in a PBPS module (without diodes yet)
This commit is contained in:
+2
-1
@@ -79,7 +79,8 @@ aliases = {
|
||||
'SAROP21-PBPS133' : {
|
||||
'alias' : 'MonOpt',
|
||||
'z_und' : 133,
|
||||
'desc' : 'Intensity/position monitor after Optics hutch'},
|
||||
'desc' : 'Intensity/position monitor after Optics hutch',
|
||||
'eco_type' : 'xdiagnostics.intensity_monitors.SolidTargetDetectorPBPS'},
|
||||
'SAROP21-PPRM133' : {
|
||||
'alias' : 'ProfOpt',
|
||||
'z_und' : 133,
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
from epics import PV
|
||||
|
||||
class EnumWrapper:
|
||||
def __init__(self,pvname):
|
||||
def __init__(self,pvname,elog=None):
|
||||
self._elog = elog
|
||||
self._pv = PV(pvname)
|
||||
self.names = self.pv.enum_strs
|
||||
self.names = self._pv.enum_strs
|
||||
self.setters = \
|
||||
Positioner(\
|
||||
[(nam,lambda:self.set(nam))
|
||||
@@ -18,13 +19,25 @@ class EnumWrapper:
|
||||
assert target>0, 'set integer needs to be greater equal zero'
|
||||
assert target<len(self.names)
|
||||
self._pv.put(target)
|
||||
def get(self):
|
||||
return self._pv.get()
|
||||
|
||||
def get_name(self):
|
||||
return self.names[self.get()]
|
||||
|
||||
def __repr__(self):
|
||||
return self.get_name()
|
||||
|
||||
|
||||
|
||||
|
||||
class Positioner:
|
||||
def __init__(list_of_name_func_tuples):
|
||||
def __init__(self,list_of_name_func_tuples):
|
||||
for name,func in list_of_name_func_tuples:
|
||||
self.__dict__[name.replace(' ','_')] = func
|
||||
tname = name.replace(' ','_')\
|
||||
.replace('.','p')
|
||||
if tname[0].isnumeric():
|
||||
tname = 'v'+tname
|
||||
self.__dict__[tname] = func
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,22 @@
|
||||
from ..devices_general.motors import MotorRecord
|
||||
from ..eco_epics.utilities_epics import EnumWrapper
|
||||
|
||||
class GasDetector:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
class SolidTargetDetector:
|
||||
def __init__(self):
|
||||
pass
|
||||
class SolidTargetDetectorPBPS:
|
||||
def __init__(self,Id,elog=None):
|
||||
self.Id = Id
|
||||
self.x_diode = MotorRecord(Id+':MOTOR_X1',elog=elog)
|
||||
self.y_diode = MotorRecord(Id+':MOTOR_Y1',elog=elog)
|
||||
self.y_target = MotorRecord(Id+':MOTOR_PROBE',elog=elog)
|
||||
self.target = EnumWrapper(Id+':PROBE_SP',elog=elog)
|
||||
|
||||
#SAROP21-CVME-PBPS:Lnk10Ch15-WD-gain
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user