diff --git a/eco/devices_general/adjustable.py b/eco/devices_general/adjustable.py index b3474a1..41ee579 100644 --- a/eco/devices_general/adjustable.py +++ b/eco/devices_general/adjustable.py @@ -31,15 +31,20 @@ def spec_convenience(Adj): # spec-inspired convenience methods def mv(self,value): self._currentChange = self.changeTo(value) + return self._currentChange def wm(self,*args,**kwargs): return self.get_current_value(*args,**kwargs) def mvr(self,value,*args,**kwargs): - - if(self.get_moveDone == 1): - startvalue = self.get_current_value(readback=True,*args,**kwargs) + if hasattr(self,'_currentChange'): + if not self._currentChange.status() == 'done': + startvalue = self._currentChange.target + elif hasattr(self,'get_moveDone'): + if (self.get_moveDone == 1): + startvalue = self.get_current_value(readback=True,*args,**kwargs) else: - startvalue = self.get_current_value(readback=False,*args,**kwargs) + startvalue = self.get_current_value(*args,**kwargs) self._currentChange = self.changeTo(value+startvalue,*args,**kwargs) + return self._currentChange def wait(self): self._currentChange.wait() @@ -210,6 +215,8 @@ class AdjustableVirtual: def changeTo(self,value,hold=False): vals = self._foo_set_target_value(value) + if not hasattr(vals,'__iter__'): + vals = (vals,) def changer(value): self._active_changers = [adj.changeTo(val,hold=False) for val,adj in zip(vals,self._adjustables)] for tc in self._active_changers: @@ -217,12 +224,8 @@ class AdjustableVirtual: def stopper(): for tc in self._active_changers: tc.stop() - return Changer( - target=value, - parent=self, - changer=changer, - hold=hold, - stopper=stopper) + self._currentChange = Changer(target=value,parent=self,changer=changer,hold=hold,stopper=stopper) + return self._currentChange def get_current_value(self): return self._foo_get_current_value(*[adj.get_current_value() for adj in self._adjustables]) diff --git a/eco/devices_general/motors.py b/eco/devices_general/motors.py index 2c657a3..52fb988 100755 --- a/eco/devices_general/motors.py +++ b/eco/devices_general/motors.py @@ -207,7 +207,7 @@ class ChangerOld: if self._thread.ident is None: return "waiting" else: - if self._isAlive: + if self._thread.isAlive: return "changing" else: return "done" diff --git a/eco/loptics/bernina_experiment.py b/eco/loptics/bernina_experiment.py index 7e7119e..acc661a 100755 --- a/eco/loptics/bernina_experiment.py +++ b/eco/loptics/bernina_experiment.py @@ -60,17 +60,31 @@ class Laser_Exp: print("No eos delay stage") pass - addMotorRecordToSelf( - self, Id=self.Id + "-M523:MOTOR_1", name="delay_glob_stg" - ) - self.delay_glob = DelayTime(self.delay_glob_stg,name="delay_glob") - self.alias.append(self.delay_glob.alias) - - # addDelayStageToSelf(self,self.__dict__["_thz_delaystg"], name="thz_delay") - # except: - # print("Problems initializing global delay stage") - # pass + try: + addMotorRecordToSelf( + self, Id=self.Id + "-M521:MOTOR_1", name="delay_eos_stg" + ) + self.delay_eos = DelayTime(self.delay_eos_stg,name="delay_eos") + self.alias.append(self.delay_eos.alias) + except: + print("Problems initializing global delay stage") + try: + addMotorRecordToSelf( + self, Id=self.Id + "-M522:MOTOR_1", name="delay_tt_stg" + ) + self.delay_tt = DelayTime(self.delay_tt_stg,name="delay_tt") + self.alias.append(self.delay_tt.alias) + except: + print("Problems initializing global delay stage") + try: + addMotorRecordToSelf( + self, Id=self.Id + "-M523:MOTOR_1", name="delay_glob_stg" + ) + self.delay_glob = DelayTime(self.delay_glob_stg,name="delay_glob") + self.alias.append(self.delay_glob.alias) + except: + print("Problems initializing global delay stage") try: addMotorRecordToSelf( self, Id=self.Id + "-M522:MOTOR_1", name="_tt_delaystg"