예제 #1
0
파일: FSM.py 프로젝트: nickkonidaris/rcrc
    def execute(self, prev_state_name, inputs):
        global last_focus
        ns=DomeOpenState.execute(self, prev_state_name, inputs)
        if ns != '': return ns
            

        try:
            cmd = GXN.Commands()
            
            positions = numpy.arange(14.0, 14.8, 0.1)
            filenames = []
            
            rc_camera.object = "Focus Loop"        
            cmd.gofocus(13)
            rc_camera.shutter = "normal"
            for position in positions:
                cmd.gofocus(position)
                try:
                    expose(15)
                except:
                    return "restart_detector_software"
                filenames.append(rc_camera.filename)
            
            log.info("FN: %s" % str(filenames))
            fpos, fposs, metrics = Focus.rc_focus_check(filenames)
            
            log.info("In the range of: %s" % positions)
            log.info("Metrics: %s" % metrics)
            log.info("Best focus is %f" % fpos)
            last_focus = [datetime.now(), fpos]
            cmd.gofocus(fpos)
            cmd.close()
        except:
            cmd.close()
            return "focus_failed"
        
        return "exposure_handler"