EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024
<== Date ==> <== Thread ==>

Subject: RE: Driver for Eiger1 with SIMPLON 1.8.0
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: Rong Huang <ronghuang at ls-cat.org>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Tue, 25 Jun 2024 21:41:42 +0000

eigerApp/src/restApi.h defines the versions:

 

typedef enum {

  API_1_6_0,

  API_1_8_0

} eigerAPIVersion_t;

 

So API_1_6_0 = 0 and API_1_8_0=1.  The fact that you are getting 1 means it is returning the correct value.

 

I suspect you may have an old version of the driver, because as I said before the new version does not try to access parameters like LINK_0, etc. unless the detector is using API_1_6_0.

 

You need to figure out what version of the driver you are running.  There is a line that defines DRIVER_VERSION in eigerDetector.cpp:

 

static const string DRIVER_VERSION("3.4.0");

 

What does yours say?

 

If you are running a git clone then you can do

 

git status to find what version you are using.

 

Mark

 

From: Rong Huang <ronghuang at ls-cat.org>
Sent: Tuesday, June 25, 2024 4:34 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk at aps.anl.gov
Subject: Re: Driver for Eiger1 with SIMPLON 1.8.0

 

Hi Mark,

 

After "mAPIVersion = mApi.getAPIVersion();", I added "std::cout << "mAPIVersion: " << mAPIVersion << std::endl;" and the printout is:

 

mAPIVersion: 1

 

Not sure what else to check

 

Thanks,

Rong

 

 

On Tue, Jun 25, 2024 at 2:00PM Mark Rivers <rivers at cars.uchicago.edu> wrote:

The areaDetector driver works with Simplon 1.8.0.  See the screenshot here:

https://areadetector.github.io/areaDetector/ADEiger/eiger.html#medm-screens

 

The unknown parameters are only present in the Simplon 1.6, not 1.8.0.  The driver only tries to create those parameters if it thinks the detector is running Simplon 1.6.0.

https://github.com/areaDetector/ADEiger/blob/9603656227ba50007401f6dcc1b4c24fb977b9bf/eigerApp/src/eigerDetector.cpp#L352

 

I can think of 2 possible reasons for the error messages:

  • You are running an old version of the driver that did not do this test.
  • The driver is not correctly detecting that your detector is running the Simplon 1.8.0 API.

 

This is where it reads the API version:

https://github.com/areaDetector/ADEiger/blob/9603656227ba50007401f6dcc1b4c24fb977b9bf/eigerApp/src/eigerDetector.cpp#L197

 

You could add some debugging to see what value it is getting in that call.

 

Mark

 

 

 

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Rong Huang via Tech-talk
Sent: Tuesday, June 25, 2024 1:07 PM
To: tech-talk at aps.anl.gov
Subject: Driver for Eiger1 with SIMPLON 1.8.0

 

Hello,

 

We have an Eiger X Si 9M detector using SIMPLON 1.8.0, and we would like to use EPICS areaDetector driver. 

Simply tried areaDetector-R3-13, iocEiger1, but it has IOC startup errors. I am not sure about the version of ADEiger, but likely a recent release on github.

Should we roll back to SIMPLON 1.6? Or is there something I have overlooked during installation? Or the IOC startup errors can just be ignored? (cannot find parameters of DCU_BUF_FREE, CLEAR, LINK_0, LINK_1, LINK_2, LINK_3).

 

Thanks,

Rong

 

######## IOC startup printout #############

#!../../bin/linux-x86_64/eigerDetectorApp

< envPaths

epicsEnvSet("IOC","iocEiger1")

epicsEnvSet("TOP","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC")

epicsEnvSet("ADEIGER","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../..")

epicsEnvSet("SUPPORT","/opt/epics/synApps-R6-2-1/support")

epicsEnvSet("ASYN","/opt/epics/synApps-R6-2-1/support/asyn-R4-44-2")

epicsEnvSet("AREA_DETECTOR","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13")

epicsEnvSet("ADSUPPORT","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADSupport")

epicsEnvSet("ADCORE","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore")

epicsEnvSet("AUTOSAVE","/opt/epics/synApps-R6-2-1/support/autosave-R5-11")

epicsEnvSet("BUSY","/opt/epics/synApps-R6-2-1/support/busy-R1-7-4")

epicsEnvSet("CALC","/opt/epics/synApps-R6-2-1/support/calc-R3-7-5")

epicsEnvSet("SNCSEQ","/opt/epics/synApps-R6-2-1/support/seq-R2-2-9")

epicsEnvSet("SSCAN","/opt/epics/synApps-R6-2-1/support/sscan-R2-11-6")

epicsEnvSet("DEVIOCSTATS","/opt/epics/synApps-R6-2-1/support/iocStats-3-2-0")

epicsEnvSet("EPICS_BASE","/opt/epics/base")

errlogInit(20000)

dbLoadDatabase("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/dbd/eigerDetectorApp.dbd")

eigerDetectorApp_registerRecordDeviceDriver(pdbbase)

epicsEnvSet("PREFIX", "21EIG1:")

epicsEnvSet("PORT",   "EIG")

epicsEnvSet("QSIZE",  "20") # The queue size for all plugins

epicsEnvSet("XSIZE",  "3110")  # The maximim image width; 

# used for row profiles in the NDPluginStats plugin # RH: # of pixels

epicsEnvSet("YSIZE",  "3269")  # The maximim image height; 

# used for column profiles in the NDPluginStats plugin # RH: # of pixels

epicsEnvSet("NCHANS", "2048")  

# The maximum number of time series points in the NDPluginStats plugin

epicsEnvSet("CBUFFS", "500")   

# The maximum number of frames buffered in the NDPluginCircularBuff plugin

# This is an Eiger1 500K

# epicsEnvSet("EIGERIP", "10.54.160.234")

epicsEnvSet("EIGERIP", "164.54.252.45")    # fig

epicsEnvSet("EPICS_DB_INCLUDE_PATH", "/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db:/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../db")

epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "5000000")

eigerDetectorConfig("EIG", "164.54.252.45", 0, 0)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../db/eiger1.template", "P=21EIG1:,R=cam1:,PORT=EIG,ADDR=0,TIMEOUT=1")

# Debug

#asynSetTraceMask("$(PORT)", 0, 0x11)

# Create a standard arrays plugin

NDStdArraysConfigure("Image1", 5, 0, "EIG", 0, 0)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDStdArrays.template", "P=21EIG1:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,TYPE=Int32,FTVL=LONG,NELEMENTS=1096950, NDARRAY_PORT=EIG")

NDStdArraysConfigure("Image2", 5, 0, "EIG", 1, 0)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDStdArrays.template", "P=21EIG1:,R=image2:,PORT=Image2,ADDR=0,TIMEOUT=1,TYPE=Int32,FTVL=LONG,NELEMENTS=1096950, NDARRAY_PORT=EIG")

# Load all other plugins using commonPlugins.cmd

< /opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/iocBoot/commonPlugins.cmd

# This is an example file for creating plugins

# It uses the following environment variable macros

# Many of the parameters defined in this file are also in commonPlugins_settings.req so if autosave is being

# use the autosave value will replace the value passed to this file.

# $(PREFIX)      Prefix for all records

# $(PORT)        The port name for the detector.  In autosave.

# $(QSIZE)       The queue size for all plugins.  In autosave.

# $(XSIZE)       The maximum image width; used to set the maximum size for row profiles in the NDPluginStats plugin and 1-D FFT

#                   profiles in NDPluginFFT.

# $(YSIZE)       The maximum image height; used to set the maximum size for column profiles in the NDPluginStats plugin

# $(NCHANS)      The maximum number of time series points in the NDPluginStats, NDPluginROIStats, and NDPluginAttribute plugins

# $(CBUFFS)      The maximum number of frames buffered in the NDPluginCircularBuff plugin

# $(MAX_THREADS) The maximum number of threads for plugins which can run in multiple threads. Defaults to 5.

# Create a netCDF file saving plugin

NDFileNetCDFConfigure("FileNetCDF1", 20, 0, "EIG", 0)

dbLoadRecords("NDFileNetCDF.template","P=21EIG1:,R=netCDF1:,PORT=FileNetCDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a TIFF file saving plugin

NDFileTIFFConfigure("FileTIFF1", 20, 0, "EIG", 0)

dbLoadRecords("NDFileTIFF.template",  "P=21EIG1:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a JPEG file saving plugin

NDFileJPEGConfigure("FileJPEG1", 20, 0, "EIG", 0)

dbLoadRecords("NDFileJPEG.template",  "P=21EIG1:,R=JPEG1:,PORT=FileJPEG1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a NeXus file saving plugin

NDFileNexusConfigure("FileNexus1", 20, 0, "EIG", 0)

dbLoadRecords("NDFileNexus.template", "P=21EIG1:,R=Nexus1:,PORT=FileNexus1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create an HDF5 file saving plugin

NDFileHDF5Configure("FileHDF1", 20, 0, "EIG", 0)

dbLoadRecords("NDFileHDF5.template",  "P=21EIG1:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,XMLSIZE=2048,NDARRAY_PORT=EIG")

# Create a Magick file saving plugin

#NDFileMagickConfigure("FileMagick1", $(QSIZE), 0, "$(PORT)", 0)

#dbLoadRecords("NDFileMagick.template","P=$(PREFIX),R=Magick1:,PORT=FileMagick1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

# Create 4 ROI plugins

NDROIConfigure("ROI1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=21EIG1:,R=ROI1:,  PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

NDROIConfigure("ROI2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=21EIG1:,R=ROI2:,  PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

NDROIConfigure("ROI3", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=21EIG1:,R=ROI3:,  PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

NDROIConfigure("ROI4", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=21EIG1:,R=ROI4:,  PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create 8 ROIStat plugins

NDROIStatConfigure("ROISTAT1", 20, 0, "EIG", 0, 8, 0, 0, 0, 0, 5)

dbLoadRecords("NDROIStat.template",   "P=21EIG1:,R=ROIStat1:  ,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:1:,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:2:,PORT=ROISTAT1,ADDR=1,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:3:,PORT=ROISTAT1,ADDR=2,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:4:,PORT=ROISTAT1,ADDR=3,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:5:,PORT=ROISTAT1,ADDR=4,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:6:,PORT=ROISTAT1,ADDR=5,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:7:,PORT=ROISTAT1,ADDR=6,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDROIStatN.template",  "P=21EIG1:,R=ROIStat1:8:,PORT=ROISTAT1,ADDR=7,TIMEOUT=1,NCHANS=2048")

# Create a processing plugin

NDProcessConfigure("PROC1", 20, 0, "EIG", 0, 0, 0)

dbLoadRecords("NDProcess.template",   "P=21EIG1:,R=Proc1:,  PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a TIFF file plugin to read dark and flatfield images into the processing plugin

NDFileTIFFConfigure("PROC1TIFF", 20, 0, "EIG", 0)

dbLoadRecords("NDFileTIFF.template",  "P=21EIG1:,R=Proc1:TIFF:,PORT=PROC1TIFF,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a scatter plugin

NDScatterConfigure("SCATTER1", 20, 0, "EIG", 0, 0, 0)

dbLoadRecords("NDScatter.template",   "P=21EIG1:,R=Scatter1:,  PORT=SCATTER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a gather plugin with 8 ports

NDGatherConfigure("GATHER1", 20, 0, 8, 0, 0)

dbLoadRecords("NDGather.template",   "P=21EIG1:,R=Gather1:, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=1, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=2, PORT=GATHER1,ADDR=1,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=3, PORT=GATHER1,ADDR=2,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=4, PORT=GATHER1,ADDR=3,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=5, PORT=GATHER1,ADDR=4,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=6, PORT=GATHER1,ADDR=5,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=7, PORT=GATHER1,ADDR=6,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDGatherN.template",   "P=21EIG1:,R=Gather1:, N=8, PORT=GATHER1,ADDR=7,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create 5 statistics plugins

NDStatsConfigure("STATS1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=21EIG1:,R=Stats1:,  PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")

NDTimeSeriesConfigure("STATS1_TS", 20, 0, "STATS1", 1, 23)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Stats1:TS:, PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS2", 20, 0, "ROI1",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=21EIG1:,R=Stats2:,  PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")

NDTimeSeriesConfigure("STATS2_TS", 20, 0, "STATS2", 1, 23)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Stats2:TS:, PORT=STATS2_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS2,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS3", 20, 0, "ROI2",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=21EIG1:,R=Stats3:,  PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")

NDTimeSeriesConfigure("STATS3_TS", 20, 0, "STATS3", 1, 23)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Stats3:TS:, PORT=STATS3_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS3,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS4", 20, 0, "ROI3",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=21EIG1:,R=Stats4:,  PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")

NDTimeSeriesConfigure("STATS4_TS", 20, 0, "STATS4", 1, 23)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Stats4:TS:, PORT=STATS4_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS4,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

NDStatsConfigure("STATS5", 20, 0, "ROI4",    0, 0, 0, 0, 0, 5)

dbLoadRecords("NDStats.template",     "P=21EIG1:,R=Stats5:,  PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")

NDTimeSeriesConfigure("STATS5_TS", 20, 0, "STATS5", 1, 23)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Stats5:TS:, PORT=STATS5_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS5,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

# Create a transform plugin

NDTransformConfigure("TRANS1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDTransform.template", "P=21EIG1:,R=Trans1:,  PORT=TRANS1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create an overlay plugin with 8 overlays

NDOverlayConfigure("OVER1", 20, 0, "EIG", 0, 8, 0, 0, 0, 0, 5)

dbLoadRecords("NDOverlay.template", "P=21EIG1:,R=Over1:, PORT=OVER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:1:,NAME=ROI1,   SHAPE=1,O=Over1:,XPOS=21EIG1:ROI1:MinX_RBV,YPOS=21EIG1:ROI1:MinY_RBV,XSIZE=21EIG1:ROI1:SizeX_RBV,YSIZE=21EIG1:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:2:,NAME=ROI2,   SHAPE=1,O=Over1:,XPOS=21EIG1:ROI2:MinX_RBV,YPOS=21EIG1:ROI2:MinY_RBV,XSIZE=21EIG1:ROI2:SizeX_RBV,YSIZE=21EIG1:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:3:,NAME=ROI3,   SHAPE=1,O=Over1:,XPOS=21EIG1:ROI3:MinX_RBV,YPOS=21EIG1:ROI3:MinY_RBV,XSIZE=21EIG1:ROI3:SizeX_RBV,YSIZE=21EIG1:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:4:,NAME=ROI4,   SHAPE=1,O=Over1:,XPOS=21EIG1:ROI4:MinX_RBV,YPOS=21EIG1:ROI4:MinY_RBV,XSIZE=21EIG1:ROI4:SizeX_RBV,YSIZE=21EIG1:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:5:,NAME=Cursor1,SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=4,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:6:,NAME=Cursor2,SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=5,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:7:,NAME=Box1,   SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=6,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:8:,NAME=Box2,   SHAPE=1,O=Over1:,XPOS=junk,                  YPOS=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=7,TIMEOUT=1")

# Create 2 color conversion plugins

NDColorConvertConfigure("CC1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDColorConvert.template", "P=21EIG1:,R=CC1:,  PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

NDColorConvertConfigure("CC2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDColorConvert.template", "P=21EIG1:,R=CC2:,  PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create a circular buffer plugin

NDCircularBuffConfigure("CB1", 20, 0, "EIG", 0, 500, 0)

dbLoadRecords("NDCircularBuff.template", "P=21EIG1:,R=CB1:,  PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

# Create an NDAttribute plugin with 8 attributes

NDAttrConfigure("ATTR1", 20, 0, "EIG", 0, 8, 0, 0, 0)

dbLoadRecords("NDAttribute.template",  "P=21EIG1:,R=Attr1:,    PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=EIG")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:1:,  PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:2:,  PORT=ATTR1,ADDR=1,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:3:,  PORT=ATTR1,ADDR=2,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:4:,  PORT=ATTR1,ADDR=3,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:5:,  PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:6:,  PORT=ATTR1,ADDR=5,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:7:,  PORT=ATTR1,ADDR=6,TIMEOUT=1,NCHANS=2048")

dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:8:,  PORT=ATTR1,ADDR=7,TIMEOUT=1,NCHANS=2048")

NDTimeSeriesConfigure("ATTR1_TS", 20, 0, "ATTR1", 1, 8)

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template",  "P=21EIG1:,R=Attr1:TS:, PORT=ATTR1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ATTR1,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")

# Create an FFT plugin

NDFFTConfigure("FFT1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDFFT.template", "P=21EIG1:, R=FFT1:, PORT=FFT1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG, NAME=FFT1, NCHANS=3110")

# Create 2 Codec plugins

NDCodecConfigure("CODEC1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDCodec.template", "P=21EIG1:, R=Codec1:, PORT=CODEC1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")

NDCodecConfigure("CODEC2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDCodec.template", "P=21EIG1:, R=Codec2:, PORT=CODEC2, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")

# Create a bad pixel plugin

NDBadPixelConfigure("BADPIX1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDBadPixel.template", "P=21EIG1:, R=BadPix1:, PORT=BADPIX1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")

set_requestfile_path("./")

set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db")

set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/iocBoot")

set_requestfile_path("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db")

set_savefile_path("./autosave")

set_pass0_restoreFile("auto_settings.sav")

set_pass1_restoreFile("auto_settings.sav")

save_restoreSet_status_prefix("21EIG1:")

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db/save_restoreStatus.db", "P=21EIG1:")

dbLoadRecords("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db/configMenu.db", "P=21EIG1:, CONFIG=ADAutoSave")

# Load NDPluginPva plugin

NDPvaConfigure("PVA1", 20, 0, "EIG", 0, 21EIG1:Pva1:Image, 0, 0, 0)

dbLoadRecords("NDPva.template",  "P=21EIG1:,R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")

#Must start PVA server if this is enabled

startPVAServer

# Optional: load ffmpegServer plugin

#ffmpegServerConfigure(8081)

#ffmpegStreamConfigure("FfmStream1", 2, 0, "$(PORT)", 0, -1, 0)

#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegStream.template", "P=$(PREFIX),R=ffmstream1:,PORT=FfmStream1,NDARRAY_PORT=$(PORT)")

#ffmpegFileConfigure("FfmFile1", 16, 0, "$(PORT)", 0, -1, 0)

#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegFile.template", "P=$(PREFIX),R=ffmfile1:,PORT=FfmFile1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(FFMPEGSERVER)/db")

# Optional: load NDPluginEdge plugin

#NDEdgeConfigure("EDGE1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0)

#dbLoadRecords("$(ADPLUGINEDGE)/db/NDEdge.template",  "P=$(PREFIX),R=Edge1:, PORT=EDGE1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(ADPLUGINEDGE)/db")

# Optional: load NDPluginCV plugin

#NDCVConfigure("CV1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))

#dbLoadRecords("$(ADCOMPVISION)/db/NDCV.template",  "P=$(PREFIX),R=CV1:, PORT=CV1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(ADCOMPVISION)/db")

# Optional: load NDPluginBar plugin

#NDBarConfigure("BAR1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))

#dbLoadRecords("$(ADPLUGINBAR)/db/NDBar.template",  "P=$(PREFIX),R=Bar1:, PORT=BAR1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

#set_requestfile_path("$(ADPLUGINBAR)/db")

# Optional: load scan records

#dbLoadRecords("$(SSCAN)/db/scan.db", "P=$(PREFIX),MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20,MAXPTS4=10,MAXPTSH=10")

#set_requestfile_path("$(SSCAN)/db")

# Optional: load sseq record for acquisition sequence

#dbLoadRecords("$(CALC)/db/sseqRecord.db", "P=$(PREFIX), S=AcquireSequence")

#set_requestfile_path("$(CALC)/db")

# Optional: load devIocStats records (requires DEVIOCSTATS module)

#dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db", "IOC=$(PREFIX)")

# Optional: load alive record (requires ALIVE module)

#dbLoadRecords("$(ALIVE)/db/alive.db", "P=$(PREFIX),RHOST=192.168.1.254")

# Set the callback queue size to 5000, up from default of 2000 in base.

# This can be needed to avoid errors "callbackRequest: cbLow ring buffer full".

callbackSetQueueSize(5000)

set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../eigerApp/Db")

# RH: to remove error of "unable to open file sseq_settings.req. Exiting"

# triggered by "auto_settings.req" -> "commonPlugin_settings.req" -> "NDStats_settings.req"

# -> "sseq_settings.req".  https://epics.anl.gov/tech-talk/2020/msg00305.php

set_requestfile_path("/opt/epics/synApps-R6-2-1/support/calc-R3-7-5/calcApp/Db")

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.8

## Rev. 2024-04-05T14:18-0500

## Rev. Date build date/time: 

############################################################################

2024/06/25 12:54:49.891 asynPortDriver:drvUserCreate: addr=0, cannot find parameter DCU_BUF_FREE

21EIG1:cam1:DCUBufferFree_RBV devAsynFloat64::initCommon drvUserCreate 

2024/06/25 12:54:49.900 asynPortDriver:drvUserCreate: addr=0, cannot find parameter CLEAR

21EIG1:cam1:FWClear devAsynInt32::initCommon drvUserCreate 

recGblRecordError: ao: init_record Error (514,11) PV: 21EIG1:cam1:FWClear

2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_0

21EIG1:cam1:Link0_RBV devAsynInt32::initCommon drvUserCreate 

2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_1

21EIG1:cam1:Link1_RBV devAsynInt32::initCommon drvUserCreate 

2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_2

21EIG1:cam1:Link2_RBV devAsynInt32::initCommon drvUserCreate 

2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_3

21EIG1:cam1:Link3_RBV devAsynInt32::initCommon drvUserCreate 

iocRun: All initialization complete

# Avoid deluge of messages when debugging

#dbpf $(PREFIX)cam1:PoolUsedMem.SCAN Passive

# save things every thirty seconds

create_monitor_set("auto_settings.req", 30, "P=21EIG1:")

epics> auto_settings.sav: 2372 of 2372 PV's connected

 


Replies:
Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
References:
Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
RE: Driver for Eiger1 with SIMPLON 1.8.0 Mark Rivers via Tech-talk
Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk

Navigate by Date:
Prev: Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
Next: Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024
Navigate by Thread:
Prev: Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
Next: Re: Driver for Eiger1 with SIMPLON 1.8.0 Rong Huang via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024
ANJ, 25 Jun 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·