diff --git a/addons/hw_scale/controllers/main.py b/addons/hw_scale/controllers/main.py index bb98a8521d0..1ebb6e39af2 100644 --- a/addons/hw_scale/controllers/main.py +++ b/addons/hw_scale/controllers/main.py @@ -8,7 +8,7 @@ import time from collections import namedtuple from os import listdir -from threading import Thread, Lock +from threading import Event, Lock, Thread from odoo import http @@ -134,6 +134,7 @@ class Scale(Thread): self.path_to_scale = '' self.protocol = None self.disabled = False + self.weight_request_event = Event() def lockedstart(self): with self.lock: @@ -261,8 +262,8 @@ class Scale(Thread): return None def get_weight(self): - self.repeats = 5 self.disabled = False + self.weight_request_event.set() self.lockedstart() return self.weight @@ -361,11 +362,13 @@ class Scale(Thread): self.device = self.get_device() if not self.device: # retry later to support "plug and play" - time.sleep(10) + self.weight_request_event.clear() + self.weight_request_event.wait(10) else: self.disabled = self.protocol.disable else: - time.sleep(10) + self.weight_request_event.clear() + self.weight_request_event.wait(10) scale_thread = None