diff --git a/eco/devices_general/cameras_swissfel.py b/eco/devices_general/cameras_swissfel.py new file mode 100644 index 0000000..45bdc56 --- /dev/null +++ b/eco/devices_general/cameras_swissfel.py @@ -0,0 +1,33 @@ + +from ..aliases import Alias,append_object_to_object +from .adjustable import PvRecord,PvEnum + +class CameraBasler: + def __init__(self,pvname,name=None): + self.pvname = pvname + self.name = name + self.alias = Alias(name) + append_object_to_object(self,PvEnum,self.pvname+':INIT',name='initialize') + append_object_to_object(self,PvEnum,self.pvname+':CAMERA',name='running') + append_object_to_object(self,PvRecord,self.pvname+':BOARD',name='board_no') + append_object_to_object(self,PvRecord,self.pvname+':SERIALNR',name='serial_no') + append_object_to_object(self,PvRecord,self.pvname+':EXPOSURE',name='_exposure_time') + append_object_to_object(self,PvEnum,self.pvname+':ACQMODE',name='_acq_mode') + append_object_to_object(self,PvEnum,self.pvname+':RECMODE',name='_req_mode') + append_object_to_object(self,PvEnum,self.pvname+':STOREMODE',name='_store_mode') + append_object_to_object(self,PvRecord,self.pvname+':BINY',name='_binx') + append_object_to_object(self,PvRecord,self.pvname+':BINY',name='_biny') + append_object_to_object(self,PvRecord,self.pvname+':REGIONX_START',name='_roixmin') + append_object_to_object(self,PvRecord,self.pvname+':REGIONX_END',name='_roixmax') + append_object_to_object(self,PvRecord,self.pvname+':REGIONY_START',name='_roiymin') + append_object_to_object(self,PvRecord,self.pvname+':REGIONY_END',name='_roiymax') + append_object_to_object(self,PvEnum,self.pvname+':SET_PARAM',name='_set_parameters') + append_object_to_object(self,PvEnum,self.pvname+':TRIGGER',name='trigger_on') + append_object_to_object(self,PvEnum,self.pvname+':TRIGGERSOURCE',name='trigger_source') + #append_object_to_object(self,PvEnum,self.pvname+':TRIGGEREDGE',name='trigger_edge') + + + + + + diff --git a/eco/utilities/utilities.py b/eco/utilities/utilities.py new file mode 100644 index 0000000..6144c99 --- /dev/null +++ b/eco/utilities/utilities.py @@ -0,0 +1,24 @@ +from time import sleep + +import sys, select + + + +_wait_strs = '\|/-\|/-' + +class WaitInput: + def __init__(self,text,wait_time=5,update_interval=1): + self.text = text + self.wait_time=wait_time + + + def start + resttime = self.wait_time + while resttime>0: + print(f"You have {resttime} seconds to answer!") + i, o, e = select.select( [sys.stdin], [], [], 2 ) + +if (i): + print("You said", sys.stdin.readline().strip()) + else: + print("You said nothing!") diff --git a/eco/xoptics/reflaser_new.py b/eco/xoptics/reflaser_new.py new file mode 100644 index 0000000..f5881c2 --- /dev/null +++ b/eco/xoptics/reflaser_new.py @@ -0,0 +1,54 @@ +from ..devices_general.motors import MotorRecord +from epics import PV +from ..aliases import Alias, append_object_to_object + + +class RefLaser_Aramis: + def __init__(self, Id, elog=None, name=None, inpos=-18.818, outpos=-5): + self.Id = Id + self.elog = elog + self.name = name + self.alias = Alias(name) + append_object_to_object(self, + + self._inpos = inpos + self._outpos = outpos + self.mirrmotor = MotorRecord(self.Id + ":MOTOR_1") + + def __call__(self, *args, **kwargs): + self.set(*args, **kwargs) + + def __str__(self): + status = self.get_status() + if status: + return "Reflaser is In." + elif status == False: + return "Reflaser is Out." + elif status == None: + return "Reflaser status not defined." + + def get_status(self): + v = self.mirrmotor.get_current_value() + if abs(v - self._inpos) < 0.2: + isin = True + elif abs(v - self._outpos) < 0.2: + isin = False + else: + isin = None + return isin + + def set(self, value): + if type(value) is str: + if value.lower() == "in": + value = True + elif value.lower() == "out": + value = False + else: + print("String %s not recognized!" % value) + if value: + self.mirrmotor.changeTo(self._inpos) + else: + self.mirrmotor.changeTo(self._outpos) + + def __repr__(self): + return self.__str__()