Configure refresh rate in ExampleDeviceScalar

This commit is contained in:
Jacob Holder 2022-01-30 21:50:03 +01:00
parent 3b9b0fc06c
commit 0549cfe0d6
Signed by: jacob
GPG Key ID: 2194FC747048A7FD
2 changed files with 12 additions and 11 deletions

View File

@ -13,8 +13,9 @@ LOGGER = logging.getLogger("my_logger")
class ExampleDeviceWorker(Thread): class ExampleDeviceWorker(Thread):
"""Communicates with the measuring hardware. Here we only produce random data.""" """Communicates with the measuring hardware. Here we only produce random data."""
def __init__(self, message_queue): def __init__(self, message_queue, refresh_rate):
super().__init__(name="Measure") super().__init__(name="Measure")
self.refresh_rate = refresh_rate
self.message_queue = message_queue self.message_queue = message_queue
self.produceData = Event() self.produceData = Event()
self.exit_request = Event() self.exit_request = Event()
@ -30,7 +31,7 @@ class ExampleDeviceWorker(Thread):
self.message_queue.put((ts, temp)) self.message_queue.put((ts, temp))
else: else:
pass pass
sleep(0.2) sleep(self.refresh_rate)
class ExampleDeviceScalar(Device): class ExampleDeviceScalar(Device):
@ -38,11 +39,11 @@ class ExampleDeviceScalar(Device):
def __init__(self): def __init__(self):
super(Device, self).__init__() super(Device, self).__init__()
self.refresh_rate = 0.2
self.measureQueue = Queue() self.measureQueue = Queue()
self.measureThread = ExampleDeviceWorker(self.measureQueue) self.measureThread = ExampleDeviceWorker(self.measureQueue, self.refresh_rate)
self.measureThread.start() self.measureThread.start()
self.measureThread.produceData.set() self.measureThread.produceData.set()
self.speed = 10
self.running = False self.running = False
def exit(self): def exit(self):
@ -50,10 +51,11 @@ class ExampleDeviceScalar(Device):
self.measureThread.exit_request.set() self.measureThread.exit_request.set()
def set_config(self, config: dict): def set_config(self, config: dict):
self.speed = config["speed"] self.refresh_rate = config["refresh_rate"]
self.measureThread.refresh_rate = self.refresh_rate
def get_config(self): def get_config(self):
return {"speed": self.speed} return {"refresh_rate": self.refresh_rate}
def get_status(self): def get_status(self):
return {"running": self.running} return {"running": self.running}

View File

@ -1,7 +1,6 @@
from time import sleep from time import sleep
from shutil import rmtree from shutil import rmtree
from CoreLibrary.Param_Model import Param_Model from CoreLibrary.Param_Model import Param_Model
from CoreLibrary.Measurement import Measurement
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
@ -15,17 +14,17 @@ def clean():
def main(param_model: Param_Model): def main(param_model: Param_Model):
sensor = param_model.devices["mess1"] sensor = param_model.devices["mess1"]
driver = param_model.devices["treib1"] driver = param_model.devices["treib1"]
driver.set_config({"speed": 2}) driver.set_config({"refresh_rate": 0.2})
status = driver.get_status() status = driver.get_status()
plot_data = param_model.get_plot_data() plot_data = param_model.get_plot_data()
for speed in [1.0, 2.0, 3.0]: for speed in [0.2, 0.5, 1.0]:
print(speed) print(speed)
driver.set_config({"speed": speed}) driver.set_config({"refresh_rate": speed})
measurement = param_model.new_measurement(name=f"penis_{speed}", writer="CSV") measurement = param_model.new_measurement(name=f"penis_{speed}", writer="CSV")
measurement.attach_device(device=sensor, name="mess1") measurement.attach_device(device=driver, name="treib1")
measurement.write_log("ich mag ramen") measurement.write_log("ich mag ramen")
param_model.start_measuring() param_model.start_measuring()
sleep(2) sleep(2)