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
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()