From f53713f791d46b9ac560be587d2b57f8a8cee128 Mon Sep 17 00:00:00 2001 From: Gerd Duscher <50049264+gduscher@users.noreply.github.com> Date: Sat, 27 Jan 2024 16:26:04 -0500 Subject: [PATCH] update --- logo.png | Bin 9854 -> 7271 bytes tests/test_eels_tools.py | 47 --------------------------------------- 2 files changed, 47 deletions(-) diff --git a/logo.png b/logo.png index 06d56f40c838b64eb048a63e036125964a069a3a..d19df8ae81dcb1ff457a22657a5c72d28265b103 100644 GIT binary patch literal 7271 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 X5mhefLwWEAB94-r`kP`|^Pv9$z;I8~ literal 9854 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 L>8MsHTOs~GC;Fmw diff --git a/tests/test_eels_tools.py b/tests/test_eels_tools.py index d71c0e31..c8734614 100644 --- a/tests/test_eels_tools.py +++ b/tests/test_eels_tools.py @@ -171,50 +171,3 @@ def test_effective_collection_angle(self): def test_get_db_spectra(self): spec_db = eels.get_spectrum_eels_db(formula='MgO', edge='K', title=None, element='O') self.assertIsInstance(spec_db, dict) - - - -import Pyro5.api -import DigitalMicrograph as DM -import numpy as np - -@Pyro5.api.expose -class CameraServer: - def __init__(self): - self.cam = None - self.preImg = None - self.kproc = None - - def activate_camera(self, height=200): - self.cam = DM.GetActiveCamera() - self.cam.PrepareForAcquire() - height = int(height/2) - bin = 1 - self.kproc = DM.GetCameraUnprocessedEnum() # or DM.GetCameraGainNormalizedEnum() - - self.preImg = self.cam.CreateImageForAcquire(bin, bin, self.kproc, 1024-height, 0, 1024+height, 2048) - return "Camera activated" - - def acquire_camera(self, exposure=0.1, height=200): - if self.cam is None or self.preImg is one: - return "Camera not activated" - self.preImg.SetName("Pre-created image container") - self.preImg.ShowImage() - height = int(height/2) - self.cam.AcquireInPlace(self.preImg, exposure, 1, 1, self.kproc, 1024-height, 0, 1024+height, 2048) - dmImgData = self.preImg.GetNumArray() - return dmImgData.tolist() # Convert numpy array to list for serialization - - def close_camera(self): - if self.preImg is not None: - del self.preImg - return "Camera closed" - -def main(): - daemon = Pyro5.api.Daemon(host="10.46.218.0", port=65433) # Choose an appropriate port - uri = daemon.register(CameraServer, "camera.server") - print("Camera Server is waiting for connections... Object uri =", uri) - daemon.requestLoop() - -if __name__ == "__main__": - main()