From e6ddeaeb3a5a30f4152eafdf4f8b15f1c1d18c23 Mon Sep 17 00:00:00 2001 From: Joel Collins Date: Wed, 30 Jan 2019 12:00:30 +0000 Subject: [PATCH] Create lock even when stage is disconnected --- openflexure_microscope/stage/openflexure.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/openflexure_microscope/stage/openflexure.py b/openflexure_microscope/stage/openflexure.py index 56d4a483..73d5a380 100644 --- a/openflexure_microscope/stage/openflexure.py +++ b/openflexure_microscope/stage/openflexure.py @@ -1,7 +1,10 @@ from openflexure_stage import OpenFlexureStage +from serial import SerialException from openflexure_microscope.lock import StrictLock +import logging + # TODO: Implement lock on movement class Stage(OpenFlexureStage): def __init__(self, *args, **kwargs): @@ -10,8 +13,12 @@ class Stage(OpenFlexureStage): adding an instance of :py:class:`openflexure_microscope.lock.StrictLock` to regulate access. """ self.lock = StrictLock(timeout=2) #: :py:class:`openflexure_microscope.lock.StrictLock`: Strict lock controlling thread access to camera hardware - - OpenFlexureStage.__init__(self, *args, **kwargs) + + try: + OpenFlexureStage.__init__(self, *args, **kwargs) + except SerialException as e: + logging.error("No stage found. Aborting stage.") + logging.warning("Stage lock can be acquired, but any stage methods will fail and raise exceptions.") def _move_rel_nobacklash(self, *args, **kwargs): """