def Close(self, manager, vname, sender_address, *args): """ Close a valve. Valve name e.g. A if vname ends with 'Flag' interpret this command as ``Set`` :param vname: name of valve :return: OK or ErrorCode """ # intercept flags if vname.endswith('Flag'): r = self.Set(manager, vname, 0, sender_address, *args) return 'OK' if r else 'Error clearing flag' result, change = manager.close_valve(vname, sender_address=sender_address) if result == True: result = 'OK' if change else 'ok' elif result is None: result = InvalidArgumentsErrorCode('Close', vname, logger=self) elif result == 'software lock enabled': result = ValveSoftwareLockErrorCode(vname, logger=self) else: result = ValveActuationErrorCode(vname, 'close', logger=self) return result
def SetZoom(self, manager, data, *args): try: zoom = float(data) except (ValueError, TypeError): return InvalidArgumentsErrorCode('SetZoom', data, logger=self) manager.zoom = zoom return 'OK'
def SetMotor(self, manager, name, data, *args): try: data = float(data) except ValueError: return InvalidArgumentsErrorCode('SetMotor', data, logger=self) if manager.set_motor(name, data, block=False): return 'OK' else: return 'OK - {} disabled'.format(name)
def SetLaserOutput(self, manager, value, units, *args): result = 'OK' try: p = float(value) except: return InvalidArgumentsErrorCode('SetLaserOutput', value, logger=self) manager.set_laser_output(p, units) return result
def SetLaserPower(self, manager, data, *args): result = 'OK' try: p = float(data) except: return InvalidArgumentsErrorCode('SetLaserPower', data, logger=self) manager.set_laser_power(p) return result
def SetSampleHolder(self, manager, name, *args): if name is None: r = InvalidArgumentsErrorCode('SetSampleHolder', name) else: err = manager.stage_manager._set_stage_map(name) if err is True: r = 'OK' else: r = InvalidSampleHolderErrorCode(name) return r
def GoToHole(self, manager, hole, autocenter, *args): try: hole = int(hole) autocenter = to_bool(autocenter) err = manager.stage_manager.move_to_hole( str(hole), correct_position=autocenter) except (ValueError, TypeError): err = InvalidArgumentsErrorCode('GoToHole', (hole, autocenter)) return self.error_response(err)
def SetBeamDiameter(self, manager, data, *args): try: bd = float(data) except ValueError: return InvalidArgumentsErrorCode('SetBeamDiameter', data, logger=self) if manager.set_beam_diameter(bd, block=False): return 'OK' else: return 'OK - beam disabled'
def SetXY(self, manager, data, *args): try: x, y = data.split(',') except (ValueError, AttributeError): return InvalidArgumentsErrorCode('SetXY', '{}'.format(data)) try: x = float(x) except ValueError: return InvalidArgumentsErrorCode('SetXY', '{} {}'.format(data, x)) try: y = float(y) except ValueError: return InvalidArgumentsErrorCode('SetXY', '{} {}'.format(data, y)) # need to remember x,y so we can fool mass spec that we are at position manager.stage_manager.temp_position = x, y err = manager.stage_manager.set_xy(x, y) return self.error_response(err)
def Close(self, manager, vname, sender_address, *args): # intercept flags if vname.endswith('Flag'): r = self.Set(manager, vname, 0, sender_address, *args) return 'OK' if r else 'Error clearing flag' result, change = manager.close_valve(vname, sender_address=sender_address) if result == True: result = 'OK' if change else 'ok' elif result is None: result = InvalidArgumentsErrorCode('Close', vname, logger=self) elif result == 'software lock enabled': result = ValveSoftwareLockErrorCode(vname, logger=self) else: result = ValveActuationErrorCode(vname, 'close', logger=self) return result
def _set_axis(self, manager, axis, value): try: d = float(value) except (ValueError, TypeError), err: return InvalidArgumentsErrorCode('Set{}'.format(axis.upper()), err)
def DoPattern(self, manager, name, *args, **kw): if name is None: err = InvalidArgumentsErrorCode('DoJog', name) else: err = manager.execute_pattern(name) return self.error_response(err)