63 lines
1.7 KiB
Python
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 |