Source code for pylablib.aux_libs.devices.AgilentLasers

from __future__ import print_function
from builtins import range

from ...core.devio import SCPI, units  #@UnresolvedImport

_depends_local=["...core.devio.SCPI"]


[docs]class HP8168F(SCPI.SCPIDevice): """ HP8168F tunable laser. """ _allow_concatenate_write=False def __init__(self, addr): SCPI.SCPIDevice.__init__(self,addr) self.max_wavelength_step=100E-12 self._add_settings_node("power_on",self.get_output,None) self._add_settings_node("power",self.get_output_level,self.set_output_level) self._add_settings_node("wavelength",self.get_wavelength,self.set_wavelength)
[docs] def get_output(self): return self.ask(":OUTPUT:STATE?","bool")
[docs] def set_output(self, enabled=True, force=False): if not force: if self.get_output()==enabled: return enabled self.write(":OUTPUT:STATE",enabled) return self.get_output()
[docs] def get_output_level(self): value,unit=self.ask(":SOURCE:POWER:LEVEL:IMM:AMP?","value") return units.convert_power_units(value,unit or "W","W",case_sensitive=False)
[docs] def set_output_level(self, level, force=False): if level is None: self.set_output(False,force=force) return None else: if not force: result=self.get_output_level() if abs(result-level)<1E-6: return result self.write(":SOURCE:POWER:LEVEL:IMM:AMP",level,"float",unit="W") return self.get_output_level()
[docs] def get_wavelength(self): value,unit=self.ask(":SOURCE:WAVELENGTH?","value") return units.convert_length_units(value,unit or "m","m",case_sensitive=False)
[docs] def set_wavelength(self, wavelength, force=False): if not force: result=self.get_wavelength() if abs(result-wavelength)<0.5E-12: return result self.write(":SOURCE:WAVELENGTH",wavelength,"float",unit="M") result=self.get_wavelength() if abs(result-wavelength)>0.5E-12: raise ValueError("can't set wavelength {}; the device is set at {}".format(wavelength,result)) return result
[docs] def step_wavelength(self, step): if abs(step)<=self.max_wavelength_step: return self.set_wavelength(self.get_wavelength()+step) else: return self.get_wavelength()
[docs] def sweep_wavelength(self, start, step_size, steps_number, delay, print_period=None): self.set_wavelength(start) for n in range(steps_number): self.sleep(delay) wl=self.step_wavelength(step_size) if print_period is not None and (n+1)%print_period==0: print("Wavelength is {:.3f}nm".format(wl*1E9)) return self.get_wavelength()
[docs] def cycle_wavelength(self, step): self.step_wavelength(step) return self.step_wavelength(-step)
[docs] def apply_settings(self, settings): if "power_on" in settings and not settings["power_on"]: self.set_output(False) SCPI.SCPIDevice.apply_settings(self,settings) if "power_on" in settings and settings["power_on"]: self.set_output(True) return self.get_settings()