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 drivers (magnetic field control)
|
||||
"""
|
||||
from sensor import Measurement
|
||||
from sensor import Sensor
|
||||
|
||||
|
||||
class Model:
|
||||
def __init__(self):
|
||||
self.sensors = {"temp": Measurement()}
|
||||
self.sensors = {"temp": Sensor()}
|
||||
self.drivers = []
|
||||
self.measurement = None
|
||||
self.plot_data = None
|
||||
pass
|
||||
|
||||
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
|
||||
|
||||
|
||||
class MeasureWork(Thread):
|
||||
class SensorWorker(Thread):
|
||||
""" Communicates with the measuring hardware. Here we only produce random data. """
|
||||
|
||||
def __init__(self, message_queue):
|
||||
@ -29,15 +29,15 @@ class MeasureWork(Thread):
|
||||
sleep(1)
|
||||
|
||||
|
||||
class Measurement(object):
|
||||
class Sensor(object):
|
||||
"""docstring for Model."""
|
||||
|
||||
def __init__(self):
|
||||
super(Measurement, self).__init__()
|
||||
super(Sensor, self).__init__()
|
||||
self.data = []
|
||||
self.t = []
|
||||
self.measureQueue = Queue()
|
||||
self.measureThread = MeasureWork(self.measureQueue)
|
||||
self.measureThread = SensorWorker(self.measureQueue)
|
||||
self.measureThread.start()
|
||||
|
||||
def start_measuring(self):
|
||||
|
Loading…
Reference in New Issue
Block a user