DAQ: added initialisation for auto exposure in DAQ devices

This commit is contained in:
2026-04-23 10:57:14 +02:00
parent c4ea023f8e
commit 9938ba74a0
+27
View File
@@ -1,3 +1,4 @@
import dataclasses
from enum import Enum
import epics
@@ -8,6 +9,15 @@ class AutoEnum(Enum):
ONCE = 1
AUTO = 2
@dataclasses.dataclass
class AutoExposureSettings:
aoi_offset_x: int = 500
aoi_offset_y: int = 500
aoi_size_x: int = 1000
aoi_size_y: int = 1000
gain_max: float = 10.000
exp_max: float = 100000.000
class epicsAD(object):
def __init__(self, prefix, cam="cam1:", image="image1:"):
self.img = None
@@ -37,11 +47,28 @@ class epicsAD(object):
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.gain_max = epics.PV(prefix + cam + "GC_AutGainUpperLimit")
self.exp_max = epics.PV(prefix + cam + "GC_AutExpTimUppLimit")
self.__init_auto_exp()
try:
epics.ca.pend_io()
except:
pass
def __init_auto_exp(self, settings: AutoExposureSettings = AutoExposureSettings()):
self.aoi_start_x.put(settings.aoi_offset_x)
self.aoi_start_y.put(settings.aoi_offset_y)
self.aoi_size_x.put(settings.aoi_size_x)
self.aoi_size_y.put(settings.aoi_size_y)
self.gain_max.put(settings.gain_max)
self.exp_max.put(settings.exp_max)
def monitorCB(self, epicsArgs, userArgs):
self.img = epicsArgs["pv_value"]
self.img.dtype = np.uint8