Added lock to stage positioning

This commit is contained in:
Joel Collins 2019-01-24 13:28:46 +00:00
parent 18dec56c80
commit 4be89866ee
2 changed files with 11 additions and 4 deletions

View file

@ -39,12 +39,12 @@ class Plugin(MicroscopePlugin):
print("Starting a long-running task...")
n_array = []
print("Acquiring camera lock...")
with self.microscope.camera.lock:
print("Acquiring camera and stage locks...")
with self.microscope.camera.lock, self.microscope.stage.lock:
for _ in range(t_run):
n_array.append(random.random())
time.sleep(1)
print("Long-running task finished! Releasing lock.")
print("Long-running task finished! Releasing locks.")
return n_array

View file

@ -7,4 +7,11 @@ class Stage(OpenFlexureStage):
def __init__(self, *args, **kwargs):
self.lock = StrictLock(timeout=2) #: Strict lock controlling thread access to camera hardware
OpenFlexureStage.__init__(self, *args, **kwargs)
OpenFlexureStage.__init__(self, *args, **kwargs)
def _move_rel_nobacklash(self, *args, **kwargs):
"""
Overrides `OpenFlexureStage._move_rel_nobacklash` to acquire lock first.
"""
with self.lock:
OpenFlexureStage._move_rel_nobacklash(self, *args, **kwargs)