diff --git a/Control/brewpi/tempLogger.py b/Control/brewpi/tempLogger.py index a010c37..c412808 100644 --- a/Control/brewpi/tempLogger.py +++ b/Control/brewpi/tempLogger.py @@ -1,8 +1,11 @@ import time import numpy as np from matplotlib.pyplot import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, subplot +import signal +import threading from tempSensorSim import TempSensorSim +#from max31865 import Max31865 class TempLogger(): def __init__(self, sensor): @@ -11,7 +14,24 @@ class TempLogger(): self.times = np.empty(0) self.count = 0 - def run(self, dt, duration): + self.abort = False + self.thread = None + self.sema = threading.Semaphore(0) + + def start(self, dt, duration): + if self.thread == None: + self.thread = threading.Thread(target=self.run, args=(dt, duration,)) + self.thread.start() + + def stop(self): + if self.thread: + self.abort = True + self.thread.join() + self.thread = None + + def run(self, *args): + dt = args[0] + duration = args[1] for t in range(0, duration): temp = self.sensor.temperature() @@ -20,17 +40,35 @@ class TempLogger(): self.temps = np.append(self.temps, temp) self.count += 1 time.sleep(dt) + if self.abort: + break - return self.result() + self.sema.release() + + def wait(self): + if self.thread: + self.sema.acquire() + pass def result(self): return self.times, self.temps if __name__ == '__main__': + def handler(signum, frame): + print('Signal handler called with signal', signum) + + if signum == signal.SIGINT: + logger.stop() + + signal.signal(signal.SIGINT, handler) + +# sensor = Max31865() sensor = TempSensorSim("FakeTemp") logger = TempLogger(sensor) - result = logger.run(1, 10) + logger.start(1.0, 10) + logger.wait() + result = logger.result() figure(1) plot(result[0]/60, result[1], 'b-', linewidth=1)