From 534a48ffd7a5505734065d7d5acee6351b3174a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 6 Jan 2013 17:11:32 +0100 Subject: [PATCH] Throttling for progress reports (every 500ms for now) and mini bugfix --- printer_webui/printer.py | 12 ++++++++++-- printer_webui/server.py | 9 --------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/printer_webui/printer.py b/printer_webui/printer.py index a406f5b..8ae4bec 100644 --- a/printer_webui/printer.py +++ b/printer_webui/printer.py @@ -4,7 +4,6 @@ __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agp import time from threading import Thread -import datetime import printer_webui.util.comm as comm from printer_webui.util import gcodeInterpreter @@ -68,6 +67,9 @@ class Printer(): # callbacks self._callbacks = [] + # callback throttling + self._lastProgressReport = None + #~~ callback registration def registerCallback(self, callback): @@ -178,6 +180,7 @@ class Printer(): return self._timelapse def _setCurrentZ(self, currentZ): + print("Setting currentZ=%s" % str(currentZ)) self._currentZ = currentZ for callback in self._callbacks: @@ -217,9 +220,13 @@ class Printer(): self._printTime = printTime self._printTimeLeft = printTimeLeft + if self._lastProgressReport and self._lastProgressReport + 0.5 > time.time(): + return + for callback in self._callbacks: try: callback.progressChangeCB(self._progress, self._printTime, self._printTimeLeft) except: pass + self._lastProgressReport = time.time() def _addTemperatureData(self, temp, bedTemp, targetTemp, bedTargetTemp): @@ -345,7 +352,8 @@ class Printer(): """ Callback method for the comm object, called upon change of the z-layer. """ - oldZ = self.currentZ + print("Got callback for z change: " + str(newZ)) + oldZ = self._currentZ if self._timelapse is not None: self._timelapse.onZChange(oldZ, newZ) diff --git a/printer_webui/server.py b/printer_webui/server.py index b8fb6d1..b18a009 100644 --- a/printer_webui/server.py +++ b/printer_webui/server.py @@ -9,7 +9,6 @@ import tornadio2 import os import fnmatch import datetime -import time from printer_webui.printer import Printer, getConnectionOptions, PrinterCallback from printer_webui.settings import settings @@ -34,10 +33,6 @@ def index(): #~~ Printer state class PrinterStateConnection(tornadio2.SocketConnection, PrinterCallback): - def __init__(self, session, endpoint=None): - tornadio2.SocketConnection.__init__(self, session, endpoint) - self._lastProgressReport = None - def on_open(self, info): printer.registerCallback(self) @@ -52,9 +47,6 @@ class PrinterStateConnection(tornadio2.SocketConnection, PrinterCallback): self.emit("zChange", {"currentZ": formattedCurrentZ}) def progressChangeCB(self, currentLine, printTimeInSeconds, printTimeLeftInMinutes): - if self._lastProgressReport and time.time() + 0.5 < self._lastProgressReport: - return - formattedPrintTime = None if (printTimeInSeconds): formattedPrintTime = _getFormattedTimeDelta(datetime.timedelta(seconds=printTimeInSeconds)) @@ -63,7 +55,6 @@ class PrinterStateConnection(tornadio2.SocketConnection, PrinterCallback): if (printTimeLeftInMinutes): formattedPrintTimeLeft = _getFormattedTimeDelta(datetime.timedelta(minutes=printTimeLeftInMinutes)) - self._lastProgressReport = time.time() self.emit("printProgress", { "currentLine": currentLine, "printTime": formattedPrintTime,