77 lines
2.0 KiB
Python
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")
|
|
|
|
|
|
|
|
|
|
|
|
""" |