2025-05-02 15:48:36 +02:00

62 lines
1.7 KiB
Python

from ..base import MeasurementDevice
from typing import Callable
from time import time as now
import numpy as np
class TestVoltageMeasurementDevice(MeasurementDevice):
def __init__(self, amplitude: float=1.0, frequency: float=20.0):
super().__init__()
self.amplitude = amplitude
self.frequency = frequency
self.t0 = now()
def test_connection(self) -> None:
pass
# RUN COMMANDS ON THE DEVICE
def run(self, code, verbose=False):
pass
def run_script(self, script_path, 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 measure(self, interval: int, update_func: Callable[None, [int, float, float]] | None = None,
# max_measurements: int | None = None):
def measureTODO():
"""
Take voltage readings after <interval> milliseconds.
Parameters
----------
interval : int
Number of milliseconds to wait between readings.
update_func : Callable[None, [int, float, float]] or None, optional
A function that is called after each reading with parameters <n_reading>, <time>, <voltage>. The default is None.
max_measurements : int or None, optional
Number of readings to perform. Set to None for infinite. The default is None.
Returns
-------
None.
"""
pass
def __str__(self):
return "Simulated Voltage Measurement Device"