Skip to content

Commit 35daa77

Browse files
committed
[cytation] atexit.register(self._stop_camera)
1 parent 48a75b7 commit 35daa77

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

pylabrobot/plate_reading/biotek_backend.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import asyncio
2+
import atexit
23
import enum
34
import logging
45
import math
@@ -176,6 +177,8 @@ async def setup(self, use_cam: bool = False) -> None:
176177
raise
177178

178179
async def _set_up_camera(self) -> None:
180+
atexit.register(self._stop_camera)
181+
179182
if not USE_PYSPIN:
180183
raise RuntimeError(
181184
"PySpin is not installed. Please follow the imaging setup instructions. "
@@ -447,19 +450,25 @@ async def stop(self) -> None:
447450
await self.stop_shaking()
448451
await self.io.stop()
449452

450-
if hasattr(self, "cam") and self.cam is not None:
451-
await self._reset_trigger()
452-
453-
self.cam.DeInit()
454-
del self.cam
455-
if hasattr(self, "spinnaker_system") and self.spinnaker_system is not None:
456-
self.spinnaker_system.ReleaseInstance()
453+
self._stop_camera()
457454

458455
self._objectives = None
459456
self._filters = None
460457
self._slow_mode = None
461458

462-
async def _reset_trigger(self):
459+
def _stop_camera(self) -> None:
460+
if self.cam is not None:
461+
if self._acquiring:
462+
self.stop_acquisition()
463+
464+
self._reset_trigger()
465+
466+
self.cam.DeInit()
467+
self.cam = None
468+
if self.spinnaker_system is not None:
469+
self.spinnaker_system.ReleaseInstance()
470+
471+
def _reset_trigger(self):
463472
if self.cam is None:
464473
return
465474

0 commit comments

Comments
 (0)