def search_scanner(self): """ Called from the scanner thread, this will keep searching for a barcode scanner until it is found. """ self.scanner = None while self.scanner is None: sleep(1) self.scanner = BarcodeScanner.get_scanner() if self.quit_event.isSet(): return self.add_event((self.EVENT_DEVICE, "plugged_in"))
def __init__(self, settings, lcd): self.settings = settings self.lcd = lcd self.sel = NumberSelector(self.lcd) self.sel.callback = self.select_packer_callback self.menu = Menu(self.lcd) self.menu.callback = self.menu_callback self.scanner = BarcodeScanner.get_scanner() self.mode = self.MODE_SELECT_PACKER self.terminal_id = self.settings.get("terminal") self.ws = Webservice(self.settings.get("url")) self.ws.token = self.settings.get("token") self.ws.username = self.settings.get("username") self.ws.password = self.settings.get("password") self.scanner_thread = Thread(target=self.scanner_thread, name="scanner_thread") self.buttons_thread = Thread(target=self.buttons_thread, name="buttons_thread") self.timer_thread = Thread(target=self.timer_thread, name="timer_thread") self.scanner_thread.daemon = True self.buttons_thread.daemon = True self.timer_thread.daemon = True self.lock = Lock() self.semaphore = Semaphore() self.timer_event = Event() self.quit_event = Event() self.event_stack = list() # Tracking status variables self.packer_id = None self.invoice = None self.start_time = None self.order_info = None # Saved previous modes for special cases self.previous_mode_menu = None