def open(self): def _readthread(me, x): if self._tracing(): print(':: tty runner started', self.dev) if fcntl is not None: fcntl.fcntl(me.tty.fd, fcntl.F_SETFL, fcntl.fcntl(me.tty.fd, fcntl.F_GETFL) | os.O_NONBLOCK) line = '' while me.running: time.sleep(0.05) try: data = me.tty.fd.read() except IOError as ioe: if ioe.errno == errno.EAGAIN: continue raise except: raise for c in data: if len(c) == 0: continue if c != chr(0): line += c if c == '\n': me.output(line) line = '' if self._tracing(): print(':: tty runner finished', self.dev) if self._tracing(): print(':: tty open', self.dev) self.tty = stty.tty(self.dev) self.tty.set(self.setup) self.tty.on() self.read_thread = threading.Thread(target = _readthread, name = 'tty[%s]' % (self.dev), args = (self, 0)) self.read_thread.daemon = True self.running = True self.read_thread.start()
def open(self): def _readthread(me, x): if self._tracing(): print(":: tty runner started", self.dev) if fcntl is not None: fcntl.fcntl(me.tty.fd, fcntl.F_SETFL, fcntl.fcntl(me.tty.fd, fcntl.F_GETFL) | os.O_NONBLOCK) line = "" while me.running: time.sleep(0.05) try: data = me.tty.fd.read() except IOError as ioe: if ioe.errno == errno.EAGAIN: continue raise except: raise for c in data: if len(c) == 0: continue if c != chr(0): line += c if c == "\n": me.output(line) line = "" if self._tracing(): print(":: tty runner finished", self.dev) if self._tracing(): print(":: tty open", self.dev) self.tty = stty.tty(self.dev) self.tty.set(self.setup) self.tty.on() self.read_thread = threading.Thread(target=_readthread, name="tty[%s]" % (self.dev), args=(self, 0)) self.read_thread.daemon = True self.running = True self.read_thread.start()
def open(self): def _readthread(me, x): line = '' while me.running: time.sleep(0.05) try: data = me.tty.read() if isinstance(data, bytes): data = data.decode('utf-8', 'ignore') data = [c for c in data if ord(c) < 128] except IOError as ioe: if ioe.errno == errno.EAGAIN: continue raise except: raise for c in data: if len(c) == 0: continue if c != chr(0): line += c if c == '\n': me.output(line) line = '' if stty and path.exists(self.dev): self.tty = stty.tty(self.dev) else: self.tty = telnet.tty(self.dev) self.tty.set(self.setup) self.tty.on() self.read_thread = threading.Thread(target=_readthread, name='tty[%s]' % (self.dev), args=(self, 0)) self.read_thread.daemon = True self.running = True self.read_thread.start()
except: raise for c in data: if len(c) == 0: continue if c != chr(0): line += c if c == "\n": me.output(line) line = "" if self._tracing(): print ":: tty runner finished", self.dev if self._tracing(): print ":: tty open", self.dev self.tty = stty.tty(self.dev) self.tty.set(self.setup) self.tty.on() self.read_thread = threading.Thread(target=_readthread, name="tty[%s]" % (self.dev), args=(self, 0)) self.read_thread.daemon = True self.running = True self.read_thread.start() def close(self): if self.tty: time.sleep(1) if self.read_thread: self.running = False self.read_thread.join(1) self.tty = None