""" API for scripting measurements and drivers Data: - dict with sensor data (temp, pressure, current) - dict with drivers (magnetic field control) """ from datetime import datetime from threading import Event, Thread from time import sleep from sensor import Sensor from measurement import Measurement from plot_data import PlotData class DataGrabber(Thread): def __init__(self, sensors, drivers, plot_data): super().__init__() self.measurement = None self.sensors = sensors self.drivers = drivers self.plot_data = plot_data self.exit_request = Event() def run(self): while not self.exit_request.is_set(): for name, sens in self.sensors.items(): dat = sens.get_data self.plot_data.append_data(name,dat) if self.measurement is not None: self.measurement.append_data(name, dat) sleep(1) class Model: def __init__(self): self.plot_data = PlotData() self.sensors = {"temp": Sensor(), "keks": Sensor()} self.drivers = [] self.measurement = None self.data_grabber = DataGrabber(self.sensors, self.drivers, self.plot_data) self.data_grabber.start() def start_measuring(self, meas_name=""): name = meas_name or f"meas_{datetime.utcnow().isoformat().replace(':', '-')}" self.measurement = Measurement(name) self.data_grabber.measurement = self.measurement def save_measuring(self, path="temp_temp.csv"): print("Has no use delete me maybe") def stop_measuring(self): self.measurement = None self.data_grabber.measurement = None def clear(self): self.plot_data.clear() def exit(self): self.data_grabber.exit_request.set() for sens in self.sensors.values(): sens.exit() """ init() sensoren = [] for mag in range(10): drive_to_value("MagnetFelied1", mag) start_measuring("volt", "filename") """