From 71de09a11f75cd89c582800aa0304e0a4e742928 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Thu, 30 Apr 2026 13:01:46 +0200 Subject: [PATCH] DAQ: corrected pvs for area detector aoi settings and white balance correction, using enums for manual and auto_once --- src/aare/devices/area_detector.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/aare/devices/area_detector.py b/src/aare/devices/area_detector.py index 07d70a5e..56c75201 100644 --- a/src/aare/devices/area_detector.py +++ b/src/aare/devices/area_detector.py @@ -46,14 +46,14 @@ class epicsAD(object): self.data = epics.PV(prefix + image + "ArrayData") self.counter = epics.PV(prefix + cam + "ArrayCounter_RBV") self.busy = epics.PV(prefix + cam + "AcquireBusy", auto_monitor=True) - - self.aoi_start_x = epics.PV(prefix + image + "GC_AutFunAOIOffsetX") - self.aoi_start_y = epics.PV(prefix + image + "GC_AutFunAOIOffsetY") - self.aoi_size_x = epics.PV(prefix + image + "GC_AutFunAOIWidth") - self.aoi_size_y = epics.PV(prefix + image + "GC_AutFunAOIHeight") + self.aoi_start_x = epics.PV(prefix + cam + "GC_AutFunAOIOffsetX") + self.aoi_start_y = epics.PV(prefix + cam + "GC_AutFunAOIOffsetY") + self.aoi_size_x = epics.PV(prefix + cam + "GC_AutFunAOIWidth") + self.aoi_size_y = epics.PV(prefix + cam + "GC_AutFunAOIHeight") self.gain_max = epics.PV(prefix + cam + "GC_AutGainUpperLimit") self.exp_max = epics.PV(prefix + cam + "GC_AutExpTimUppLimit") + self.auto_white_balance = epics.PV(prefix + cam + "GC_BalanceWhiteAuto") self.__init_auto_exp() try: @@ -68,6 +68,8 @@ class epicsAD(object): self.aoi_size_y.put(settings.aoi_size_y) self.gain_max.put(settings.gain_max) self.exp_max.put(settings.exp_max) + self.set_auto_once() + self.auto_white_balance.put(1) def monitorCB(self, epicsArgs, userArgs): self.img = epicsArgs["pv_value"] @@ -173,13 +175,13 @@ class epicsAD(object): self.acquire.put(1) def set_auto_once(self): - self.expo_mode.put(1) - self.gain_mode.put(1) + self.expo_mode.put(AutoEnum.ONCE) + self.gain_mode.put(AutoEnum.ONCE) def set_manual(self): self.acquire.put(0, wait=True) - self.gain_mode.put(0) # automatic gain control - self.expo_mode.put(0) # automatic exposure control + self.gain_mode.put(AutoEnum.MANUAL) # automatic gain control + self.expo_mode.put(AutoEnum.MANUAL) # automatic exposure control self.acquire.put(1) def restore(self, gain: float = 5, expo: float = 0.025):