OlliTut/model.py
2021-06-20 22:34:23 +02:00

63 lines
1.7 KiB
Python

import numpy as np
from datetime import datetime
from threading import Thread, Event
from time import sleep, time
from queue import Queue
from random import random
class MeasureWork(Thread):
def __init__(self, message_queue):
super().__init__(name="Measure")
self.message_queue = message_queue
self.produceData = Event()
self.file = open("temp.csv", "w")
def run(self):
while True:
if self.produceData.is_set():
temp = random()
ts = datetime.now()
self.message_queue.put((ts, temp))
self.file.write(f"{ts} - {temp}\n")
else:
self.file.flush()
sleep(1)
class Model(object):
"""docstring for Model."""
def __init__(self):
super(Model, self).__init__()
self.data = []
self.t = []
self.measureQueue = Queue()
self.measureThread = MeasureWork(self.measureQueue)
self.measureThread.start()
def startMeasureing(self):
self.measureThread.produceData.set()
print("I started meas")
def saveMeasureing(self, path='temp_temp.csv'):
print("I saved meas")
np.savetxt(path, np.array(self.data))
def stopMeasureing(self):
self.measureThread.produceData.clear()
print("I started meas")
def clear(self):
self.data = []
self.t = []
print("I started meas")
@property
def getData(self):
while not self.measureQueue.empty():
t, data = self.measureQueue.get()
self.data.append(data)
self.t.append(t)
print(self.data)
return self.t, self.data