OlliTut/model.py
2021-08-10 23:51:50 +02:00

77 lines
2.0 KiB
Python

"""
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")
"""