From ff84a45df76802e2436581c72d77b288d35c2695 Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 17 Dec 2025 17:55:50 -0800 Subject: [PATCH] stop all cameras on cleanup, log errors in finish --- .../model/acquisitions/AcquisitionEngine.java | 1 + .../acquisitions/AcquisitionEngineSCAPE.java | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java index fef9ffd..132b445 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java @@ -143,6 +143,7 @@ public Future requestRun(boolean speedTest) { studio_.logs().showError(e); } finally { finish(); // cleanup any resources + currentAcquisition_ = null; } }); return acqFinished; diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java index 11a5d7a..9878882 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java @@ -673,6 +673,20 @@ public void close() { @Override boolean finish() { + + final CameraBase[] cameras = model_.devices().getImagingCameras(); + + // Stop all cameras sequences + try { + for (CameraBase camera : model_.devices().getImagingCameras()) { + if (core_.isSequenceRunning(camera.getDeviceName())) { + core_.stopSequenceAcquisition(camera.getDeviceName()); + } + } + } catch (Exception e) { + studio_.logs().logError("Could not stop camera sequences: " + e.getMessage()); + } + // clean up controller settings after acquisition // want to do this, even with demo cameras, so we can test everything else // TODO: figure out if we really want to return piezos to 0 position (maybe center position, @@ -704,28 +718,25 @@ boolean finish() { core_.setShutterOpen(isShutterOpen_); core_.setAutoShutter(autoShutter_); } catch (Exception e) { - throw new RuntimeException("Couldn't restore shutter to original state"); + studio_.logs().logError("Couldn't restore shutter to original state"); } // Check if acquisition ended due to an exception and show error to user if it did try { currentAcquisition_.checkForExceptions(); } catch (Exception e) { - studio_.logs().showError(e); + studio_.logs().logError(e); } // TODO: execute any end-acquisition runnables // set the camera trigger modes back to internal for live mode - CameraBase[] cameras = model_.devices().getImagingCameras(); for (int i = 0; i < cameras.length; i++) { CameraBase camera = cameras[i]; camera.setTriggerMode(CameraMode.INTERNAL); camera.setExposure(savedExposures_.get(i)); } - currentAcquisition_ = null; - if (acqSettings_.isSavingImagesDuringAcquisition()) { final String savePath = FileUtils.createUniquePath( acqSettings_.saveDirectory(), acqSettings_.saveNamePrefix());