Ejemplo n.º 1
0
 def __init__(self, filename, data_dir=None, run_time=0, focal_length=None, watch_url=None):
     self.dfile = FODatafile(filename, data_dir, watch_url=watch_url, focal_length=focal_length)
     logging.debug('Filename: %s' % (self.dfile.filename))
     if run_time > 0:
         logging.debug('Run time: %d seconds' % run_time)
     self.go_time = time.time()
     self.end_time = self.go_time + run_time
     self.run_time = run_time
Ejemplo n.º 2
0
class FlexOpt(LineReceiver):
    def __init__(self, filename, data_dir=None, run_time=0, focal_length=None, watch_url=None):
        self.dfile = FODatafile(filename, data_dir, watch_url=watch_url, focal_length=focal_length)
        logging.debug('Filename: %s' % (self.dfile.filename))
        if run_time > 0:
            logging.debug('Run time: %d seconds' % run_time)
        self.go_time = time.time()
        self.end_time = self.go_time + run_time
        self.run_time = run_time

    def connectionMade(self):
        logging.debug('Connection made to the flexOptometer!')
        self.tzero = time.time()

    def do_sample(self):
        """
        Do a single sample on demand. Triggers lineReceived.
        """
        self.transport.write('\rrea\r')

    def lineReceived(self, line):
        ts = time.time() - self.tzero
        str = line.strip()

        if len(str) == 0:
            return

        if str[0] == '*':
            logging.warn('Ignoring line "%s"' % str)
            return

        if str == 'Ok':
            return

        if str == 'ERROR-Command not recognized.':
            logging.error('Unknown command!')
            return

        try:
            fv = float(str)
        except ValueError:
            logging.exception('Error parsing as float: ')
            return

        if fv < 0.0:
            logging.warn('Dropping negative value %f' % fv)
            return

        logstr = '%s\t%s\n' % (ts, fv)
        logging.debug(logstr.strip())

        self.dfile.write_datum(ts, fv)

        if self.run_time > 0:
            if time.time() > self.end_time:
                logging.info('Done.')
                self.dfile.close()
                self.transport.write('\r')
                self.transport.write('beep\r')
                self.transport.write('beep\r')
                self.transport.write('beep\r')
                self.transport.write('beep\r')
                self.transport.loseConnection()
                reactor.stop()