83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
import logging
|
|
from logging.handlers import RotatingFileHandler
|
|
from time import sleep
|
|
from threading import Thread, Event
|
|
|
|
from CoreLibrary.ExampleDeviceScalar import ExampleDeviceScalar
|
|
from CoreLibrary.Measurement import Measurement
|
|
from CoreLibrary.Plot_Data import Plot_Data
|
|
|
|
LOGGER = logging.getLogger("my_logger")
|
|
LOGGER.setLevel(logging.DEBUG)
|
|
LOGGER.propagate = False
|
|
|
|
# create formatter
|
|
formatter = logging.Formatter('%(levelname)s %(asctime)s - %(module)s: %(message)s')
|
|
|
|
# create console handler and set level to debug
|
|
ch = logging.StreamHandler()
|
|
ch.setLevel(logging.INFO)
|
|
# add formatter to ch
|
|
ch.setFormatter(formatter)
|
|
# add ch to logger
|
|
LOGGER.addHandler(ch)
|
|
|
|
fi = RotatingFileHandler("my_logger.log", maxBytes=10**5, backupCount=5)
|
|
fi.setLevel(logging.DEBUG)
|
|
fi.setFormatter(formatter)
|
|
LOGGER.addHandler(fi)
|
|
|
|
|
|
class DataWorker(Thread):
|
|
def __init__(self, pd):
|
|
super().__init__(name="Data_Worker")
|
|
self.exit_request = Event()
|
|
self.pd = pd
|
|
|
|
def run(self):
|
|
while not self.exit_request.is_set():
|
|
self.pd.refresh()
|
|
sleep(1)
|
|
|
|
|
|
class Param_Model:
|
|
def __init__(self):
|
|
self.devices = {"treib1": ExampleDeviceScalar(), "mess1": ExampleDeviceScalar()}
|
|
self.__plot_data = []
|
|
self.__measurement = []
|
|
self.data_worker = DataWorker(self)
|
|
self.data_worker.start()
|
|
|
|
def new_measurement(self, name=None, writer=None) -> Measurement:
|
|
mess = Measurement(name=name)
|
|
self.__measurement.append(mess)
|
|
return mess
|
|
|
|
def get_plot_data(self):
|
|
plot_data = Plot_Data()
|
|
self.__plot_data.append(plot_data)
|
|
return plot_data
|
|
|
|
def refresh(self):
|
|
LOGGER.debug("refresh")
|
|
for name, device in self.devices.items():
|
|
data = device.get_data
|
|
for meas in self.__measurement:
|
|
meas.append_data(name, data)
|
|
for pd in self.__plot_data:
|
|
pd.append_data(name, data)
|
|
|
|
def stop_measuring(self):
|
|
for sens in self.devices.values():
|
|
sens.stop_measuring()
|
|
|
|
def start_measuring(self):
|
|
for sens in self.devices.values():
|
|
sens.start_measuring()
|
|
|
|
def exit(self):
|
|
LOGGER.warning("entering exit method")
|
|
for sens in self.devices.values():
|
|
sens.exit()
|
|
self.data_worker.exit_request.set()
|