예제 #1
0
 def __init__(self, name, config, config_filepath):
     self.i = 0
     super().__init__(name, config, config_filepath)
     self.recording = False
     self.temps = collections.deque(maxlen=500)
     self.set_temp = 0
     self.row = []
     #time.sleep(30)
     # initialize clients
     self._heater_client = gpiozero.DigitalOutputDevice(pin=18)  #yaqc.Client(38455)
     self._heater_client.value = 0
     self._temp_client = yaqc.Client(39001)
     self._temp_client.measure(loop=True)
     self._pressure_client_a = yaqc.Client(39100)
     #self._pressure_client_a.set_state(gain=2, size=16)
     self._pressure_client_a.measure(loop=True)
     self._pressure_client_b = yaqc.Client(39101)
     #self._pressure_client_b.set_state(gain=2, size=16)
     self._pressure_client_b.measure(loop=True)
     self._pressure_client_c = yaqc.Client(39102)
     #self._pressure_client_c.set_state(gain=2, size=16)
     self._pressure_client_c.measure(loop=True)
     # begin looping
     self._pid = PID(Kp=0.2, Ki=0.001, Kd=0.01, setpoint=0, proportional_on_measurement=True)
     self._loop.create_task(self._runner())
예제 #2
0
    def __init__(self, *args, **kwargs):
        self._yaqd_port = kwargs.pop("yaqd_port")
        super().__init__(*args, **kwargs)

        # open control
        self.ctrl = yaqc.Client(self._yaqd_port)
        # import some information from control
        id_dict = self.ctrl.id()
        self.serial_number = id_dict["serial"]
        self.position.write(self.ctrl.get_position())
        # recorded
        self.recorded[self.name] = [
            self.position, self.native_units, 1.0, "m", False
        ]
        self.limits.write(*self.ctrl.get_limits())
        self.wait_until_still()

        self.grating = pc.Combo(
            name="Grating",
            allowed_values=self.ctrl.get_turret_options(),
            display=True,
            set_method="set_turret",
        )
        self.exposed.append(self.grating)

        # finish
        self.initialized.write(True)
        self.initialized_signal.emit()
예제 #3
0
    def __init__(self, *args, **kwargs):
        self.yaqd_port = kwargs["yaqd_port"]
        self.yaqd_host = kwargs.get("yaqd_host", "127.0.0.1")
        self.motor = yaqc.Client(self.yaqd_port, host=self.yaqd_host)
        self.motor_units = self.motor.get_units()
        self.native_units = kwargs.get("native_units", "deg")
        self.native_per_motor = float(
            wt.units.convert(1, self.motor_units, self.native_units))
        hw.Driver.__init__(self, *args, **kwargs)
        id_ = self.motor.id()
        if id_["model"] is not None:
            self.hardware.model = id_["model"]
        elif id_["kind"].startswith("fake"):
            self.hardware.model = "fake"
        else:
            self.hardware.model = id_["kind"]

        self.factor = self.hardware.factor
        self.factor.write(kwargs["factor"])
        self.motor_limits = self.hardware.motor_limits
        self.motor_limits.write(*self.motor.get_limits())
        self.motor_position = self.hardware.motor_position
        self.zero_position = self.hardware.zero_position
        self.set_zero(self.zero_position.read(self.motor_units))
        self.recorded["_".join([self.name, "zero"])] = [
            self.zero_position,
            "deg",
            0,
            self.label.read(),
            True,
        ]
예제 #4
0
    def __init__(self, *args, **kwargs):
        self.yaqd_port = kwargs["yaqd_port"]
        self.yaqd_host = kwargs.get("yaqd_host", "127.0.0.1")
        self.motor = yaqc.Client(self.yaqd_port, host=self.yaqd_host)
        self.motor_units = self.motor.get_units()
        if self.motor_units == "mm":
            self.motor_units = "mm_delay"
        self.native_units = kwargs.get("native_units", "ps")
        self.native_per_motor = float(wt.units.convert(1, self.motor_units, self.native_units))
        hw.Driver.__init__(self, *args, **kwargs)
        id_ = self.motor.id()
        if id_["model"] is not None:
            self.hardware.model = id_["model"]
        elif id_["kind"].startswith("fake"):
            self.hardware.model = "fake"
        else:
            self.hardware.model = id_["kind"]

        self.factor = self.hardware.factor
        self.factor.write(kwargs["factor"])
        self.motor_limits = self.hardware.motor_limits
        self.motor_limits.write(*self.motor.get_limits())
        self.motor_position = self.hardware.motor_position
        self.zero_position = self.hardware.zero_position
        self.set_zero(self.zero_position.read(self.motor_units))
        self.update_recorded()
예제 #5
0
 def __init__(self, *args, **kwargs):
     self.yaqd_port = kwargs["yaqd_port"]
     self.yaqd_host = kwargs.get("yaqd_host", "127.0.0.1")
     self.client = yaqc.Client(self.yaqd_port, host=self.yaqd_host)
     self.motor_positions = {
         k: pc.Number(name=k, decimals=6, display=True) for k in self.client.get_setable_names()
     }
     hw.Driver.__init__(self, *args, **kwargs)
     self.shutter_port = kwargs.get("shutter_yaqd_port")
     if self.shutter_port:
         self.shutter_position = pc.Bool(name="Shutter", display=True, set_method="set_shutter")
         self.shutter = yaqc.Client(self.shutter_port)
         self.shutter.set_identifier("closed")
         self.exposed += [self.shutter_position]
     self.curve = attune.Instrument(**self.client.get_instrument())
     self.load_curve()
     self.get_motor_positions()
     self.get_position()
예제 #6
0
 def __init__(self, *args, **kwargs):
     self.yaqd_port = kwargs["yaqd_port"]
     self.yaqd_host = kwargs.get("yaqd_host", "127.0.0.1")
     self.client = yaqc.Client(self.yaqd_port, host=self.yaqd_host)
     self.client.register_connection_callback(
         signals.updated_attune_store.emit)
     signals.updated_attune_store.connect(self.on_updated_attune_store)
     self.motor_positions = {
         k: pc.Number(name=k, decimals=6, display=True)
         for k in self.client.get_setable_names()
     }
     hw.Driver.__init__(self, *args, **kwargs)
     self.shutter_port = kwargs.get("shutter_yaqd_port")
     if self.shutter_port:
         self.shutter_position = pc.Bool(name="Shutter",
                                         display=True,
                                         set_method="set_shutter")
         self.shutter = yaqc.Client(self.shutter_port)
         self.shutter.set_identifier("closed")
         self.exposed += [self.shutter_position]
     self.on_updated_attune_store()
예제 #7
0
 def __init__(self, sensor, yaqd_port):
     super().__init__()
     self.client = yaqc.Client(yaqd_port)
     # attributes
     self.name = self.client.id()["name"]
     self.enqueued = sensor.enqueued
     self.busy = sensor.busy
     self.freerun = sensor.freerun
     self.data = sensor.data
     self.shape = sensor.shape
     self.measure_time = sensor.measure_time
     self.thread = sensor.thread
예제 #8
0
 def initialize(self, *args, **kwargs):
     # open control
     self.ctrl = yaqc.Client(self._yaqd_port)
     # import some information from control
     id_dict = self.ctrl.id()
     self.serial_number = id_dict["serial"]
     self.position.write(self.ctrl.get_position())
     # recorded
     self.recorded[self.name] = [
         self.position, self.native_units, 1.0, "m", False
     ]
     self.wait_until_still()
     # finish
     self.initialized.write(True)
     self.initialized_signal.emit()
예제 #9
0
    def __init__(self, *args, **kwargs):
        self.yaqd_port = kwargs["yaqd_port"]
        self.yaqd_host = kwargs.get("yaqd_host", "127.0.0.1")
        self.motor = yaqc.Client(self.yaqd_port, host=self.yaqd_host)
        self.native_units = self.motor.get_units()
        hw.Driver.__init__(self, *args, **kwargs)
        id_ = self.motor.id()
        if id_["model"] is not None:
            self.hardware.model = id_["model"]
        elif id_["kind"].startswith("fake"):
            self.hardware.model = "fake"
        else:
            self.hardware.model = id_["kind"]

        self.update_recorded()
        self.busy.write(self.is_busy())
예제 #10
0
 def __init__(self, app):
     super().__init__()
     # self.start_time = wt.kit.TimeStamp()
     self.app = app
     self.__version__ = __version__
     # title
     title = "Gas Uptake Reactor Control"
     title += " | version %s" % self.__version__
     title += " | Python %i.%i" % (sys.version_info[0], sys.version_info[1])
     self.setWindowTitle(title)
     #
     self.data = np.full((14, 10000), np.nan)
     self.recording = False
     self.client = yaqc.Client(39000)
     self.record_started = time.time()
     #
     self._begin_poll_loop()
예제 #11
0
    def __init__(self, name, config, config_filepath):
        super().__init__(name, config, config_filepath)
        self._channel_names = ["ingaas"]
        self._channel_units = {"ingaas": None}
        self._channel_shapes = {"ingaas": (256, )}

        self._channel_mappings = {"ingaas": ["wavelengths"]}
        self._mapping_units = {"wavelengths": "nm"}

        self._spec_position = self._config["spectrometer_position"]
        if isinstance(self._spec_position, str):
            host, port = self._spec_position.split(":")
            import yaqc  # type: ignore

            self._spec_client = yaqc.Client(int(port), host=host)
        else:
            self._spec_client = None

        self._mappings["wavelengths"] = self._gen_mappings()
        self._ser = serial.Serial()
        self._ser.baudrate = self._config["baud_rate"]  # must be 57600
        self._ser.port = self._config["serial_port"]
        self._ser.open()
예제 #12
0
 def _load_google_drive(self):
     g.google_drive_enabled.write(
         self.config.get("google_drive", {}).get("enable", False))
     if g.google_drive_enabled.read():
         g.google_drive_control.write(
             yaqc.Client(self.config["google_drive"]["port"]))
예제 #13
0
import numpy as np
import matplotlib.pyplot as plt
import yaqc

ingaas = yaqc.Client(38989)
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
t = np.arange(-2.0, 2.0, 0.001)
(l, ) = ax.plot(t, np.zeros_like(t), lw=2)


def submit():
    try:
        ingaas.measure()
        l.set_xdata(ingaas.get_mappings()["wavelengths"])
        l.set_ydata(ingaas.get_measured()["ingaas"])
    except ConnectionError:
        pass
    ax.relim()
    ax.autoscale_view()
    plt.draw()


timer = fig.canvas.new_timer(interval=200)


@timer.add_callback
def update():
    submit()