xy zzy <the.stuffd...@gmail.com> added the comment:

Cfrom class():

        # see if we can connect to pcPart
        try:
            self.pcPart = telnetlib.Telnet(IP, PORT)
            # clear the buffer 
            for i in range(10):
                self.pcPart.write('\n')
                r = self.pcPart.read_until('Prompt>', 1)

        except socket.error, e:
            logging.debug('socket.error: %d: %s' % (e.args[0], e.args[1]))
            self.pcPart.close()
            self.pcPart = None

from init():

    def talk(self,cmd,ret):

        """talk to the device"""

        read_chars = ""

        while (read_chars == ""):
            try:
                read_chars=""
                # get to the Prompt> prompt
                # logging.debug('seeking prompt')
                while (read_chars != 'Prompt>'):
                    self.pcPart.write("\n")
                    raw_data = self.pcPart.read_until('Prompt>', 1).split('\n')
                    # logging.debug('raw_data: %i %s' % (len(raw_data), 
raw_data))
                    read_chars = raw_data[2] 
                    # logging.debug('read_chars: %s' % (read_chars))
                    
                # send the command
                # logging.debug('found prompt')
                cmdx = (('xyzzy:%s\n') % cmd)
                self.pcPart.write(cmdx)
                # logging.debug('command %s, %s' % (cmd, cmdx))
                if (ret):
                    while ((len(raw_data) > 0) and ('{' not in read_chars)):
                        raw_data = self.pcPart.read_until('Prompt>', 1) 
                        # logging.debug('raw_data: %i %s' % (len(raw_data), 
raw_data))
                        try: 
                            read_chars = str(raw_data.split('\n\r')[1][1:-1])
                        except:
                            read_chars = ''
                            # logging.debug('read_chars: %s' % (read_chars))
                else:
                    raw_data = self.pcPart.read_until('Prompt>', 1)
                    # logging.debug('ret read: %s' % (raw_data))
                    read_chars = '@'
                    return read_chars

            except IndexError, e:
                logging.debug('IndexError: %d: %s' % (e.args[0], e.args[1]))
                traceback.print_exc(file=open(LOG_FILENAME, 'a'))
                read_chars = '@'
                time.sleep(1)

            except (IOError, socket.error), e:
                logging.debug('socket.error: %d: %s' % (e.args[0], e.args[1]))
                traceback.print_exc(file=open(LOG_FILENAME, 'a'))
                self.pcPart.close()
                self.pcPart = None
                logging.debug('reconnecting...')
                self.pcPart = telnetlib.Telnet(IP, PORT) 
                # clear the buffer 
                for i in range(10):
                    self.pcPart.write('\n')
                    r = self.pcPart.read_until('Prompt>', 1)
                read_chars = '@'
                logging.debug('reconnected')

        # clear the buffer 
        for i in range(2):
            self.pcPart.write('\n')
            r = self.pcPart.read_until('Prompt>', 1)
        # logging.debug('Data Read: ' + read_chars)
        return read_chars  

called from:

                DATA = self.talk('cmd', True)
                logging.debug('talk: %s' % (DATA))

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13109>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to