DAQ: added initialisation for auto exposure in DAQ devices
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user