Unfinished data restructure
This commit is contained in:
parent
f3f21ffadd
commit
b88b90ef4a
31
measurement.py
Normal file
31
measurement.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class Measurement:
|
||||||
|
def __init__(self, name, sensors, path=None, comment=None):
|
||||||
|
self.name = name
|
||||||
|
self.path = os.path.join(path or "./meas_values", self.name)
|
||||||
|
os.makedirs(self.path)
|
||||||
|
self.save_version_text(comment)
|
||||||
|
|
||||||
|
self.data_files = {} # sensor_name: file_handler
|
||||||
|
|
||||||
|
def append_data(self, sensor_name, data):
|
||||||
|
"""
|
||||||
|
Save data from a sensor. Write it into the corresponding file.
|
||||||
|
|
||||||
|
TODO: file size limit, zip?
|
||||||
|
data: list of tuples: (timestamp, value)
|
||||||
|
"""
|
||||||
|
if sensor_name not in self.data_files:
|
||||||
|
self.data_files[sensor_name] = open(os.path.join(self.path, f"{sensor_name}_data.csv"))
|
||||||
|
for timestamp, value in data:
|
||||||
|
self.data_files[sensor_name].write(f"{timestamp.isoformat()}, {timestamp.timestamp()}, {value}\n")
|
||||||
|
|
||||||
|
def save_version_text(self, comment):
|
||||||
|
with open(os.path.join(self.path, "version.txt"), "w") as file:
|
||||||
|
file.write("Version 0.1\n")
|
||||||
|
if comment:
|
||||||
|
file.write(comment + "\n")
|
||||||
|
file.write("More descriptions of relevant parameters\n")
|
||||||
|
|
6
model.py
6
model.py
@ -5,13 +5,15 @@ Data:
|
|||||||
- dict with sensor data (temp, pressure, current)
|
- dict with sensor data (temp, pressure, current)
|
||||||
- dict with drivers (magnetic field control)
|
- dict with drivers (magnetic field control)
|
||||||
"""
|
"""
|
||||||
from sensor import Measurement
|
from sensor import Sensor
|
||||||
|
|
||||||
|
|
||||||
class Model:
|
class Model:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.sensors = {"temp": Measurement()}
|
self.sensors = {"temp": Sensor()}
|
||||||
self.drivers = []
|
self.drivers = []
|
||||||
|
self.measurement = None
|
||||||
|
self.plot_data = None
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def start_measuring(self):
|
def start_measuring(self):
|
||||||
|
34
plot_data.py
Normal file
34
plot_data.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import numpy as np
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
class PlotData():
|
||||||
|
def __init__(self):
|
||||||
|
self.refresh_rate = 1 # ms
|
||||||
|
self.timeout = 100 # cycles
|
||||||
|
self.data = {"time": np.array([0])}
|
||||||
|
self.start_time = datetime.utcnow()
|
||||||
|
self.queues = {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def append_data(self, sensor_name, data):
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
if sensor_name not in self.data:
|
||||||
|
self.queues[sensor_name] = []
|
||||||
|
self.data[sensor_name] = np.full_like(self.data["time"], np.nan)
|
||||||
|
|
||||||
|
for data_tuple in data:
|
||||||
|
self.queues[sensor_name].append(data_tuple)
|
||||||
|
|
||||||
|
"""
|
||||||
|
TODO
|
||||||
|
while true
|
||||||
|
clean delte all to old values
|
||||||
|
for q in que:
|
||||||
|
if q is empty
|
||||||
|
return
|
||||||
|
update np array
|
||||||
|
"""
|
||||||
|
|
@ -6,7 +6,7 @@ from queue import Queue
|
|||||||
from random import random
|
from random import random
|
||||||
|
|
||||||
|
|
||||||
class MeasureWork(Thread):
|
class SensorWorker(Thread):
|
||||||
""" Communicates with the measuring hardware. Here we only produce random data. """
|
""" Communicates with the measuring hardware. Here we only produce random data. """
|
||||||
|
|
||||||
def __init__(self, message_queue):
|
def __init__(self, message_queue):
|
||||||
@ -29,15 +29,15 @@ class MeasureWork(Thread):
|
|||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
|
|
||||||
class Measurement(object):
|
class Sensor(object):
|
||||||
"""docstring for Model."""
|
"""docstring for Model."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Measurement, self).__init__()
|
super(Sensor, self).__init__()
|
||||||
self.data = []
|
self.data = []
|
||||||
self.t = []
|
self.t = []
|
||||||
self.measureQueue = Queue()
|
self.measureQueue = Queue()
|
||||||
self.measureThread = MeasureWork(self.measureQueue)
|
self.measureThread = SensorWorker(self.measureQueue)
|
||||||
self.measureThread.start()
|
self.measureThread.start()
|
||||||
|
|
||||||
def start_measuring(self):
|
def start_measuring(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user