134 lines
3.1 KiB
Python
134 lines
3.1 KiB
Python
from ..base import LockInAmp
|
|
from typing import Callable
|
|
from time import time as now
|
|
import numpy as np
|
|
|
|
class DummyLockInAmp(LockInAmp):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
def test_connection(self) -> None:
|
|
pass
|
|
|
|
# RUN COMMANDS ON THE DEVICE
|
|
def run(self, code, verbose=False):
|
|
pass
|
|
|
|
def reset(self, verbose=False):
|
|
pass
|
|
|
|
def read_value(self) -> tuple[float, float]:
|
|
"""
|
|
Read a single value
|
|
|
|
Returns
|
|
-------
|
|
[timestamp, voltage]
|
|
"""
|
|
t = now() - self.t0
|
|
v = self.amplitude * np.sin(2 * np.pi * t / self.frequency)
|
|
return t, v
|
|
|
|
def query(self, query):
|
|
return "-1"
|
|
|
|
def snap(self, what="3,4,5,7"):
|
|
vals = [-1.0 for _ in what.split(",")]
|
|
return vals
|
|
|
|
def try_recover_from_communication_error(self, original_error):
|
|
pass
|
|
|
|
def check_overloads(self) -> bool | str:
|
|
return False
|
|
|
|
def read_value(self, which: str):
|
|
return -1.0
|
|
|
|
def reset(self):
|
|
pass
|
|
|
|
def test_connection(self):
|
|
pass
|
|
|
|
# REFERENCE
|
|
def set_reference(self, reference):
|
|
self.reference = reference
|
|
|
|
|
|
def set_frequency_Hz(self, frequency_Hz):
|
|
self.frequency = frequency_Hz
|
|
|
|
def get_frequency_Hz(self) -> float:
|
|
return self.frequency
|
|
|
|
def set_reference_trigger(self, trigger):
|
|
self.reference_trigger = trigger
|
|
|
|
def set_sensitivity_volt(self, volt):
|
|
self.sensitivity_volt = volt
|
|
|
|
def get_sensitivity_volt(self):
|
|
return self.sensitivity_volt
|
|
|
|
def set_time_constant_s(self, dt):
|
|
self.time_constant_s = dt
|
|
|
|
def get_time_constant_s(self):
|
|
return self.time_constant_s
|
|
|
|
def set_filter_slope(self, slope_db_oct):
|
|
self.filter_slope = slope_db_oct
|
|
|
|
def get_filter_slope(self):
|
|
return self.filter_slope
|
|
|
|
def get_wait_time_s(self):
|
|
"""
|
|
Get the wait time required to reach 99% of the final value.
|
|
See Manual 3-21
|
|
:return:
|
|
"""
|
|
return 1.0
|
|
|
|
def set_sync_filter(self, sync):
|
|
self.sync_filter = sync
|
|
|
|
def get_sync_filter(self):
|
|
return self.sync_filter
|
|
|
|
def set_reserve(self, reserve):
|
|
self.reserve = reserve
|
|
|
|
def get_reserve(self):
|
|
return self.reserve
|
|
|
|
max_length = 16383
|
|
def buffer_setup(self, CH1="R", CH2="Theta", length=None, sample_rate=512):
|
|
if length is None:
|
|
length = self.max_length
|
|
self._buffer_length = length
|
|
|
|
def buffer_start_fill(self):
|
|
if self._buffer_length is None: raise RuntimeError(f"Buffer not set up, call buffer_setup() first.")
|
|
|
|
def buffer_is_done(self) -> bool:
|
|
return True
|
|
|
|
def buffer_get_n_points(self) -> int:
|
|
return self._buffer_length
|
|
|
|
def buffer_get_data(self, CH1=True, CH2=True):
|
|
data = []
|
|
if CH1:
|
|
data.append(np.arange(self._buffer_length))
|
|
if CH2:
|
|
data.append(np.arange(self._buffer_length))
|
|
return data
|
|
|
|
def auto_gain(self):
|
|
pass
|
|
|
|
def __str__(self):
|
|
return "Dummy Lock-In"
|