Esempio n. 1
0
 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()
Esempio n. 2
0
    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()
Esempio n. 3
0
    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()
Esempio n. 4
0
                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