Skip to content

Commit 9fe1030

Browse files
committed
ximea: remove duplicated code in _fetch_data and unused get_current_image
Also raise an exception if an unknown trigger_type which previously would just be ignored and always return None.
1 parent 107ca49 commit 9fe1030

File tree

1 file changed

+23
-46
lines changed

1 file changed

+23
-46
lines changed

microscope/cameras/ximea.py

Lines changed: 23 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -50,36 +50,30 @@ def __init__(self, dev_id = 0, **kwargs):
5050
self.Roi=ROI(None,None,None,None)
5151

5252
def _fetch_data(self):
53+
if not self._acquiring:
54+
return
55+
5356
trigger_type = self.handle.get_trigger_source()
54-
if trigger_type == 'XI_TRG_SOFTWARE':
55-
if self._acquiring and self._triggered:
56-
try:
57-
self.handle.get_image(self.img)
58-
data = self.img.get_image_data_numpy()
59-
_logger.info("Fetched imaged with dims %s and size %s." % (data.shape, data.size))
60-
_logger.info('Sending image')
61-
self._triggered = False
62-
return self.img.get_image_data_numpy()
63-
except Exception as err:
64-
if getattr(err, 'status', None) == 10:
65-
# This is a Timeout error
66-
return None
67-
else:
68-
raise err
69-
elif trigger_type == 'XI_TRG_EDGE_RISING':
70-
if self._acquiring:
71-
try:
72-
self.handle.get_image(self.img)
73-
data = self.img.get_image_data_numpy()
74-
_logger.info("Fetched imaged with dims %s and size %s." % (data.shape, data.size))
75-
_logger.info('Sending image')
76-
return self.img.get_image_data_numpy()
77-
except Exception as err:
78-
if getattr(err, 'status', None) == 10:
79-
#This is a Timeout error
80-
return None
81-
else:
82-
raise err
57+
if trigger_type == 'XI_TRG_SOFTWARE' and not self._triggered:
58+
return
59+
elif trigger_type != 'XI_TRG_EDGE_RISING':
60+
raise Exception('unhandled trigger type %s' % trigger_type)
61+
62+
try:
63+
self.handle.get_image(self.img)
64+
data = self.img.get_image_data_numpy()
65+
_logger.info("Fetched imaged with dims %s and size %s.",
66+
data.shape, data.size)
67+
_logger.info('Sending image')
68+
if trigger_type == 'XI_TRG_SOFTWARE':
69+
self._triggered = False
70+
return self.img.get_image_data_numpy()
71+
except Exception as err:
72+
if getattr(err, 'status', None) == 10:
73+
# This is a Timeout error
74+
return
75+
else:
76+
raise err
8377

8478
def abort(self):
8579
_logger.info('Disabling acquisition.')
@@ -112,23 +106,6 @@ def initialize(self):
112106

113107
self.img = xiapi.Image()
114108

115-
def get_current_image(self):
116-
_logger.info('In get_current_image')
117-
try:
118-
if self._acquiring and self._triggered:
119-
self.handle.get_image(self.img)
120-
data = self.img.get_image_data_numpy()
121-
_logger.info("Fetched imaged with dims %s and size %s." % (data.shape, data.size))
122-
_logger.info('Sending image')
123-
self._triggered = False
124-
return data
125-
except Exception as err:
126-
if getattr(err, 'status', None) == 10:
127-
# This is a Timeout error
128-
return None
129-
else:
130-
raise err
131-
132109
def make_safe(self):
133110
if self._acquiring:
134111
self.abort()

0 commit comments

Comments
 (0)