diff --git a/debye_bec/devices/mo1_bragg/mo1_bragg.py b/debye_bec/devices/mo1_bragg/mo1_bragg.py index 2c673f7..ac5b85a 100644 --- a/debye_bec/devices/mo1_bragg/mo1_bragg.py +++ b/debye_bec/devices/mo1_bragg/mo1_bragg.py @@ -416,25 +416,31 @@ class Mo1Bragg(PSIDeviceBase, Mo1BraggPositioner): Returns: output (float): Converted angle or energy """ + self.calculator.calc_reset.put(0) self.calculator.calc_reset.put(1) status = CompareStatus(self.calculator.calc_done, 0) self.cancel_on_stop(status) status.wait(self.timeout_for_pvwait) + self.calculator.calc_reset.put(0) if mode == "AngleToEnergy": - self.calculator.calc_angle.put(inp) + in_signal = self.calculator.calc_angle + out_signal = self.calculator.calc_energy elif mode == "EnergyToAngle": - self.calculator.calc_energy.put(inp) + in_signal = self.calculator.calc_energy + out_signal = self.calculator.calc_angle + else: + raise Mo1BraggError(f'Unknown mode {mode}') + in_signal.put(inp) status = CompareStatus(self.calculator.calc_done, 1) self.cancel_on_stop(status) status.wait(self.timeout_for_pvwait) - time.sleep(0.25) # TODO needed still? Needed due to update frequency of softIOC - if mode == "AngleToEnergy": - return self.calculator.calc_energy.get() - elif mode == "EnergyToAngle": - return self.calculator.calc_angle.get() + status = CompareStatus(out_signal, 0, operation_success='>') + self.cancel_on_stop(status) + status.wait(self.timeout_for_pvwait) + return out_signal.get() def set_advanced_xas_settings( self, low: float, high: float, scan_time: float, p_kink: float, e_kink: float