Bases: KPFFunction
Resets the kpfgreen detector
ARGS:
None
Source code in kpf/spectrograph/ResetDetectors.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 | class ResetGreenDetector(KPFFunction):
'''Resets the kpfgreen detector
ARGS:
=====
None
'''
@classmethod
def pre_condition(cls, args):
pass
@classmethod
def perform(cls, args):
# Check if the auto reset is already doing this
current_expstate = ktl.cache('kpfgreen', 'EXPSTATE')
current_expstate.read()
if current_expstate == 'Resetting':
return
elif current_expstate == 'Exposing':
log.warning('Can not send reset during exposure')
return
# Send the reset
expose = ktl.cache('kpfgreen', 'EXPOSE')
log.warning(f"Resetting: kpfgreen.EXPOSE = Reset")
expose.write('Reset')
log.debug('Reset command sent')
@classmethod
def post_condition(cls, args):
timeout = cfg.getfloat('times', 'kpfexpose_reset_time', fallback=10)
log.warning(f"Waiting for kpfgreen to be Readout or Ready")
expr = f"($kpfgreen.EXPOSE == 'Ready') or ($kpfgreen.EXPOSE == 'Readout')"
success = ktl.waitFor(expr, timeout=timeout)
if success is not True:
expose = ktl.cache('kpfgreen', 'EXPOSE')
raise FailedToReachDestination(expose.read(), 'Ready or Readout')
else:
kpfexpose = ktl.cache('kpfexpose')
log.info(f"ResetGreenDetector done")
log.info(f"kpfexpose.EXPOSE = {kpfexpose['EXPOSE'].read()}")
log.info(f"kpfexpose.EXPLAINR = {kpfexpose['EXPLAINR'].read()}")
log.info(f"kpfexpose.EXPLAINNR = {kpfexpose['EXPLAINNR'].read()}")
|