made the epics enum wrapper working and put in a PBPS module (without diodes yet)

This commit is contained in:
2017-11-13 22:28:27 +01:00
parent 4055fba7e7
commit ae83578f32
3 changed files with 35 additions and 8 deletions
+2 -1
View File
@@ -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,
+17 -4
View File
@@ -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
+16 -3
View File
@@ -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