50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
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.values():
|
|
self.queues[sensor_name].append(data_tuple)
|
|
|
|
running = True
|
|
while running:
|
|
#TODO timeout clean
|
|
for que in self.queues.values():
|
|
if len(que) == 0:
|
|
running = False
|
|
break
|
|
|
|
for sensor,que in self.queues.items():
|
|
self.data[sensor] = np.append(self.data[sensor], que[0])
|
|
que = que[1:]
|
|
|
|
|
|
|
|
|
|
"""
|
|
TODO
|
|
while true
|
|
clean delte all to old values
|
|
for q in que:
|
|
if q is empty
|
|
return
|
|
update np array
|
|
"""
|
|
|