class BarcodeReader(DeviceBase): def doInitialize(self): self.disable() def enable(self): microscan_cmd.write("") self.setState(State.Ready) def disable(self): microscan_cmd.write("") self.setState(State.Disabled) def get(self,timeout=1.0): self.state.assertReady() try: self.setState(State.Busy) ret = microscan.waitString(int(timeout * 1000)) self.setCache(ret, None) return ret except: self.setCache(None, None) return None finally: self.setState(State.Ready) def doUpdate(self): self.get() def read(self,timeout=1.0): initial = self.state if initial == State.Disabled: self.enable() try: return self.get() finally: if initial == State.Disabled: self.disable() add_device(BarcodeReader("barcode_reader"), force = True)