Skip to content

Commit d9268ed

Browse files
authored
Reset soft trigger acquisition when max frame counter is reached (#76)
* Reset soft trigger acquisition when max frame counter is reached * Bump NUMFRAMESTOACQUIRE to maximum value * Rename variables
1 parent 5397b11 commit d9268ed

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

instamatic/camera/camera_merlin.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def MPX_CMD(type_cmd: str = 'GET', cmd: str = 'DETECTORSTATUS') -> bytes:
4747
class CameraMerlin:
4848
"""Camera interface for the Quantum Detectors Merlin camera."""
4949
START_SIZE = 14
50+
MAX_NUMFRAMESTOACQUIRE = 42_949_672_950
5051

5152
def __init__(self, name='merlin'):
5253
"""Initialize camera module."""
@@ -138,12 +139,12 @@ def setup_soft_trigger(self, exposure=None):
138139

139140
self._frame_number = 0
140141

141-
# Set NUMFRAMESTOACQUIRE to a large number
142-
# Merlin will only collect this number of frames with SOFTTRIGGER
143-
self.merlin_set('NUMFRAMESTOACQUIRE', 10_000)
142+
# Set NUMFRAMESTOACQUIRE to maximum
143+
# Merlin collects up to this number of frames with a single SOFTTRIGGER acquisition
144+
self.merlin_set('NUMFRAMESTOACQUIRE', self.MAX_NUMFRAMESTOACQUIRE)
144145

145-
self.merlin_set('TRIGGERSTART', '5')
146-
self.merlin_set('NUMFRAMESPERTRIGGER', '1')
146+
self.merlin_set('TRIGGERSTART', 5)
147+
self.merlin_set('NUMFRAMESPERTRIGGER', 1)
147148
self.merlin_cmd('STARTACQUISITION')
148149

149150
start = self.receive_data(nbytes=self.START_SIZE)
@@ -175,7 +176,10 @@ def getImage(self, exposure=None, binsize=None, **kwargs) -> np.ndarray:
175176
self.setup_soft_trigger(exposure=exposure)
176177
elif exposure != self._soft_trigger_exposure:
177178
logger.info('Change exposure to %s s', exposure)
178-
self.teardown_soft_trigger()
179+
self.setup_soft_trigger(exposure=exposure)
180+
elif self._frame_number == self.MAX_NUMFRAMESTOACQUIRE:
181+
logger.debug(('Maximum frame number reached for this acquisition, '
182+
'resetting soft trigger.') % self.MAX_NUMFRAMESTOACQUIRE)
179183
self.setup_soft_trigger(exposure=exposure)
180184

181185
self.merlin_cmd('SOFTTRIGGER')

0 commit comments

Comments
 (0)