Hello again,
by trying to resolve my issue with the bad pixel file I came across this site and downloaded the 16#5149_1pF_PxlMask.his file:
https://millenia.cars.aps.anl.gov/data/PerkinElmer/C_PerkinElmer/
I can load it as a bad pixel file, and it just works fine. Here is some output with additional Header-information:
epics>
FileType=7000
HeaderSize=68
HeaderVersion=100
FileSize=8388708
ULX=1, ULY=1
BRX=2048, BRY=2048
NrOfFrames=1
Correction=0
IntegrationTime=0.000000
TypeOfNumbers=4
2023/11/09 13:24:39.609 PerkinElmer:readPixelCorrectionFile: Bad pixel map read in: 14256 bad pixels found
However, when I load the bad pixel file for my detector, I get the following Header-information:
FileType=7000
HeaderSize=68
HeaderVersion=100
FileSize=33554532
ULX=1, ULY=1
BRX=4096, BRY=4096
NrOfFrames=1
Correction=0
IntegrationTime=0.000000
TypeOfNumbers=4
2023/11/09 13:25:47.189 PerkinElmer:readPixelCorrectionFile: Bad pixel map read in: 0 bad pixels found
I wonder if the file is too large for the reading-in procedure, and this is why no bad pixels are found? Maybe the reading-in process is too slow … ?
Can someone help?
Thanks in advance!
Michael
Von: Sintschuk, Michael
Gesendet: Freitag, 3. November 2023 17:10
An: tech-talk <tech-talk at aps.anl.gov>
Betreff: ADPerkinElmer Bad Pixel Files
Hello all,
I have a XRD 1611 detector from Perkin Elmer and I’m using it with the lates ADPerkinElmer module with EPICS-Base 7.0.7 on a Windows-10 64bit machine. It works fine until I try to use the Bad Pixel File – Correction
(it’s the bad pixel correction function from Perkin Elmer, not the NDPluginBadPixel module). I’m able to load a Bad Pixel File that we obtained with the detector from the vendor (it has the .his format), the Correction field changes from “Not Available” in
yellow to “Available” in green. As soon as I enable the Bad Pixel File Correction and trigger an image, the IOC starts acquiring and freezes. In ~20s the IOC crashes without any notifications.
Is anyone else using the pixel correction function from Perkin Elmer with the .his files from the vendor successfully? Or is the NDPluginBadPixel module more common in this community?
This is my IOC-Start with enabled asynTraces:
C:\epics\IOC\SauerweinIOC\iocBoot\iocSauerwein>call dllPath.bat
DLLMain()-DLL_PROCESS_ATTACH
Init Mutex created
Read Mutex created
#!../../bin/windows-x64-static/Sauerwein
errlogInit(20000)
< envPaths
epicsEnvSet("IOC","iocSauerwein")
epicsEnvSet("TOP","C:/epics/IOC/SauerweinIOC")
epicsEnvSet("SUPPORT","C:/epics/inst-7.0.7")
epicsEnvSet("ASYN","C:/epics/inst-7.0.7/asyn")
epicsEnvSet("AREA_DETECTOR","C:/epics/inst-7.0.7/areaDetector")
epicsEnvSet("ADCORE","C:/epics/inst-7.0.7/areaDetector/ADCore")
epicsEnvSet("ADSUPPORT","C:/epics/inst-7.0.7/areaDetector/ADSupport")
epicsEnvSet("ADPERKINELMER","C:/epics/inst-7.0.7/areaDetector/ADPerkinElmer")
epicsEnvSet("AUTOSAVE","C:/epics/inst-7.0.7/autosave")
epicsEnvSet("BUSY","C:/epics/inst-7.0.7/busy")
epicsEnvSet("CALC","C:/epics/inst-7.0.7/calc")
epicsEnvSet("SSCAN","C:/epics/inst-7.0.7/sscan")
epicsEnvSet("MOTOR","C:/epics/inst-7.0.7/motor")
epicsEnvSet("EPICS_BASE","C:/epics/base-7.0.7")
cd "C:/epics/IOC/SauerweinIOC"
## Register all support components
dbLoadDatabase "dbd/Sauerwein.dbd"
Sauerwein_registerRecordDeviceDriver pdbbase
cd "C:/epics/IOC/SauerweinIOC/iocBoot/iocSauerwein"
## Load record instances
## motorUtil (allstop & alldone)
dbLoadRecords("C:/epics/inst-7.0.7/motor/db/motorUtil.db", "P=isel:")
< motor.cmd.iMC
dbLoadTemplate("motor.substitutions.iMC")
# linux
#drvAsynSerialPortConfigure("serial1", "/dev/ttyACM0", 0, 0, 0)
# windows
drvAsynSerialPortConfigure("serial1","COM2", 0, 0, 0)
asynSetOption("serial1", -1, "baud", "19200")
asynSetOption("serial1", -1, "bits", "8")
asynSetOption("serial1", -1, "parity", "none")
asynSetOption("serial1", -1, "stop", "1")
# Turn on asyn traces
#asynSetTraceIOMask("serial1",0,0x255)
#asynSetTraceMask("serial1",0,0x255)
#asynSetTraceFile("serial1",0,"isel.txt")
###
# iMCCreateController(
# motor port (will be created),
# asyn port (must already exist),
# num axes,
# moving poll period (ms),
# idle poll period (ms),
###
iMCCreateController("iMC_1", "serial1", 4, 1000, 1000)
# Turn off asyn traces
#asynSetTraceIOMask("serial1",0,0x0)
#asynSetTraceMask("serial1",0,0x1)
< detektor.cmd.PerkinElmer
# Prefix for all records
epicsEnvSet("PREFIX", "XRD:")
# The port name for the detector
epicsEnvSet("PORT", "PEDET1")
# The queue size for all plugins
epicsEnvSet("QSIZE", "20")
# The maximim image width; used for row profiles in the NDPluginStats plugin
epicsEnvSet("XSIZE", "4096")
# The maximim image height; used for column profiles in the NDPluginStats plugin
epicsEnvSet("YSIZE", "4096")
# The maximum number of time seried points in the NDPluginStats plugin
epicsEnvSet("NCHANS", "2048")
# The maximum number of frames buffered in the NDPluginCircularBuff plugin
epicsEnvSet("CBUFFS", "500")
# The search path for database files
epicsEnvSet("EPICS_DB_INCLUDE_PATH", "C:/epics/inst-7.0.7/areaDetector/ADCore/db")
# Create a PerkinElmer driver
# PerkinElmerConfig(const char *portName, IDType, IDValue, maxBuffers, size_t maxMemory, int priority, int stackSize)
# IDType = 0 Frame grabber card, IDValue="", use first frame grabber or directly connected GigE detector
# = 1 GigE detector by IP address (e.g. 164.54.160.21)
# = 2 GigE detector by MAC address (e.g. 00005b032e6b, must be lower-case letters)
# = 3 GigE detector by detector name (e.g. 8#2608). Can get network detector names with asynReport(10)
# This is for the first PCI/PCIExpress frame grabber detector in the system
PerkinElmerConfig("PEDET1", 0, "0", 0, 0, 0, 0)
# This is for the second PCI/PCIExpress frame grabber detector in the system
#PerkinElmerConfig("$(PORT)", 0, "1", 0, 0, 0, 0)
# This is for a GigE detector at IP address 164.54.160.204
#PerkinElmerConfig("$(PORT)", 1, 164.54.160.204, 0, 0, 0, 0)
# This is for a GigE detector at MAC address 00005b032e6b
#PerkinElmerConfig("$(PORT)", 2, 00005b032e6b, 0, 0, 0, 0)
# This is for a GigE detector with name 8#2608
#PerkinElmerConfig("$(PORT)", 3, 8#2608, 0, 0, 0, 0)
asynSetTraceIOMask(PEDET1, 0, 2)
# Setting this to 9 to enable ASYN_TRACEIO_DRIVER and see XIS calls
#asynSetTraceMask($(PORT),0, 9)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADPerkinElmer/db/PerkinElmer.template","P=XRD:,R=cam1:,PORT=PEDET1,ADDR=0,TIMEOUT=1")
# Create a standard arrays plugin, set it to get data from Driver.
NDStdArraysConfigure("Image1", 3, 0, "PEDET1", 0)
# Set NELEMENTS to at least the total number of pixels in the detector. The following is a little larger than 4096 x 4096
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDStdArrays.template", "P=XRD:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1,TYPE=Int16,SIZE=16,FTVL=SHORT,NELEMENTS=33600000")
# Load all other plugins using commonPlugins.cmd
< C:/epics/inst-7.0.7/areaDetector/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, "PEDET1", 0)
dbLoadRecords("NDFileNetCDF.template","P=XRD:,R=netCDF1:,PORT=FileNetCDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a TIFF file saving plugin
NDFileTIFFConfigure("FileTIFF1", 20, 0, "PEDET1", 0)
dbLoadRecords("NDFileTIFF.template", "P=XRD:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a JPEG file saving plugin
NDFileJPEGConfigure("FileJPEG1", 20, 0, "PEDET1", 0)
dbLoadRecords("NDFileJPEG.template", "P=XRD:,R=JPEG1:,PORT=FileJPEG1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a NeXus file saving plugin
NDFileNexusConfigure("FileNexus1", 20, 0, "PEDET1", 0)
dbLoadRecords("NDFileNexus.template", "P=XRD:,R=Nexus1:,PORT=FileNexus1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create an HDF5 file saving plugin
NDFileHDF5Configure("FileHDF1", 20, 0, "PEDET1", 0)
dbLoadRecords("NDFileHDF5.template", "P=XRD:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,XMLSIZE=2048,NDARRAY_PORT=PEDET1")
# 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, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=XRD:,R=ROI1:, PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
NDROIConfigure("ROI2", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=XRD:,R=ROI2:, PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
NDROIConfigure("ROI3", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=XRD:,R=ROI3:, PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
NDROIConfigure("ROI4", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=XRD:,R=ROI4:, PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create 8 ROIStat plugins
NDROIStatConfigure("ROISTAT1", 20, 0, "PEDET1", 0, 8, 0, 0, 0, 0, 5)
dbLoadRecords("NDROIStat.template", "P=XRD:,R=ROIStat1: ,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:1:,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:2:,PORT=ROISTAT1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:3:,PORT=ROISTAT1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:4:,PORT=ROISTAT1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:5:,PORT=ROISTAT1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:6:,PORT=ROISTAT1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:7:,PORT=ROISTAT1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=XRD:,R=ROIStat1:8:,PORT=ROISTAT1,ADDR=7,TIMEOUT=1,NCHANS=2048")
# Create a processing plugin
NDProcessConfigure("PROC1", 20, 0, "PEDET1", 0, 0, 0)
dbLoadRecords("NDProcess.template", "P=XRD:,R=Proc1:, PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a TIFF file plugin to read dark and flatfield images into the processing plugin
NDFileTIFFConfigure("PROC1TIFF", 20, 0, "PEDET1", 0)
dbLoadRecords("NDFileTIFF.template", "P=XRD:,R=Proc1:TIFF:,PORT=PROC1TIFF,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a scatter plugin
NDScatterConfigure("SCATTER1", 20, 0, "PEDET1", 0, 0, 0)
dbLoadRecords("NDScatter.template", "P=XRD:,R=Scatter1:, PORT=SCATTER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a gather plugin with 8 ports
NDGatherConfigure("GATHER1", 20, 0, 8, 0, 0)
dbLoadRecords("NDGather.template", "P=XRD:,R=Gather1:, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=1, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=2, PORT=GATHER1,ADDR=1,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=3, PORT=GATHER1,ADDR=2,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=4, PORT=GATHER1,ADDR=3,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=5, PORT=GATHER1,ADDR=4,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=6, PORT=GATHER1,ADDR=5,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=7, PORT=GATHER1,ADDR=6,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDGatherN.template", "P=XRD:,R=Gather1:, N=8, PORT=GATHER1,ADDR=7,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create 5 statistics plugins
NDStatsConfigure("STATS1", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=XRD:,R=Stats1:, PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4096,YSIZE=4096,NCHANS=2048,NDARRAY_PORT=PEDET1")
NDTimeSeriesConfigure("STATS1_TS", 20, 0, "STATS1", 1, 23)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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=XRD:,R=Stats2:, PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4096,YSIZE=4096,NCHANS=2048,NDARRAY_PORT=PEDET1")
NDTimeSeriesConfigure("STATS2_TS", 20, 0, "STATS2", 1, 23)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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=XRD:,R=Stats3:, PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4096,YSIZE=4096,NCHANS=2048,NDARRAY_PORT=PEDET1")
NDTimeSeriesConfigure("STATS3_TS", 20, 0, "STATS3", 1, 23)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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=XRD:,R=Stats4:, PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4096,YSIZE=4096,NCHANS=2048,NDARRAY_PORT=PEDET1")
NDTimeSeriesConfigure("STATS4_TS", 20, 0, "STATS4", 1, 23)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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=XRD:,R=Stats5:, PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4096,YSIZE=4096,NCHANS=2048,NDARRAY_PORT=PEDET1")
NDTimeSeriesConfigure("STATS5_TS", 20, 0, "STATS5", 1, 23)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDTransform.template", "P=XRD:,R=Trans1:, PORT=TRANS1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create an overlay plugin with 8 overlays
NDOverlayConfigure("OVER1", 20, 0, "PEDET1", 0, 8, 0, 0, 0, 0, 5)
dbLoadRecords("NDOverlay.template", "P=XRD:,R=Over1:, PORT=OVER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDOverlayN.template","P=XRD:,R=Over1:1:,NAME=ROI1, SHAPE=1,O=Over1:,XPOS=XRD:ROI1:MinX_RBV,YPOS=XRD:ROI1:MinY_RBV,XSIZE=XRD:ROI1:SizeX_RBV,YSIZE=XRD:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=XRD:,R=Over1:2:,NAME=ROI2, SHAPE=1,O=Over1:,XPOS=XRD:ROI2:MinX_RBV,YPOS=XRD:ROI2:MinY_RBV,XSIZE=XRD:ROI2:SizeX_RBV,YSIZE=XRD:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=XRD:,R=Over1:3:,NAME=ROI3, SHAPE=1,O=Over1:,XPOS=XRD:ROI3:MinX_RBV,YPOS=XRD:ROI3:MinY_RBV,XSIZE=XRD:ROI3:SizeX_RBV,YSIZE=XRD:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=XRD:,R=Over1:4:,NAME=ROI4, SHAPE=1,O=Over1:,XPOS=XRD:ROI4:MinX_RBV,YPOS=XRD:ROI4:MinY_RBV,XSIZE=XRD:ROI4:SizeX_RBV,YSIZE=XRD:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=XRD:,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=XRD:,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=XRD:,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=XRD:,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, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDColorConvert.template", "P=XRD:,R=CC1:, PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
NDColorConvertConfigure("CC2", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDColorConvert.template", "P=XRD:,R=CC2:, PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create a circular buffer plugin
NDCircularBuffConfigure("CB1", 20, 0, "PEDET1", 0, 500, 0)
dbLoadRecords("NDCircularBuff.template", "P=XRD:,R=CB1:, PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
# Create an NDAttribute plugin with 8 attributes
NDAttrConfigure("ATTR1", 20, 0, "PEDET1", 0, 8, 0, 0, 0)
dbLoadRecords("NDAttribute.template", "P=XRD:,R=Attr1:, PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=PEDET1")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:1:, PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:2:, PORT=ATTR1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:3:, PORT=ATTR1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:4:, PORT=ATTR1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:5:, PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:6:, PORT=ATTR1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:7:, PORT=ATTR1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=XRD:,R=Attr1:8:, PORT=ATTR1,ADDR=7,TIMEOUT=1,NCHANS=2048")
NDTimeSeriesConfigure("ATTR1_TS", 20, 0, "ATTR1", 1, 8)
dbLoadRecords("C:/epics/inst-7.0.7/areaDetector/ADCore/db/NDTimeSeries.template", "P=XRD:,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, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDFFT.template", "P=XRD:, R=FFT1:, PORT=FFT1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PEDET1, NAME=FFT1, NCHANS=4096")
# Create 2 Codec plugins
NDCodecConfigure("CODEC1", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDCodec.template", "P=XRD:, R=Codec1:, PORT=CODEC1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PEDET1")
NDCodecConfigure("CODEC2", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDCodec.template", "P=XRD:, R=Codec2:, PORT=CODEC2, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PEDET1")
# Create a bad pixel plugin
NDBadPixelConfigure("BADPIX1", 20, 0, "PEDET1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDBadPixel.template", "P=XRD:, R=BadPix1:, PORT=BADPIX1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PEDET1")
set_requestfile_path("./")
set_requestfile_path("C:/epics/inst-7.0.7/areaDetector/ADCore/db")
set_requestfile_path("C:/epics/inst-7.0.7/areaDetector/ADCore/iocBoot")
set_requestfile_path("C:/epics/inst-7.0.7/autosave/db")
set_savefile_path("./autosave")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
save_restoreSet_status_prefix("XRD:")
dbLoadRecords("C:/epics/inst-7.0.7/autosave/db/save_restoreStatus.db", "P=XRD:")
dbLoadRecords("C:/epics/inst-7.0.7/autosave/db/configMenu.db", "P=XRD:, CONFIG=ADAutoSave")
# Load NDPluginPva plugin
NDPvaConfigure("PVA1", 20, 0, "PEDET1", 0, XRD:Pva1:Image, 0, 0, 0)
dbLoadRecords("NDPva.template", "P=XRD:,R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PEDET1")
#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("C:/epics/inst-7.0.7/areaDetector/ADPerkinElmer/perkinElmerApp/Db")
set_requestfile_path("C:/epics/inst-7.0.7/calc/calcApp/Db")
iocInit
Starting iocInit
############################################################################
## EPICS R7.0.7
## Rev. 2023-03-17T15:40
## Rev. Date build date/time:
############################################################################
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from './autosave/auto_settings.sav' at initHookState 6 (before record/device init) ***
reboot_restore: done with file 'auto_settings.sav'
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from './autosave/auto_settings.sav' at initHookState 7 (after record/device init) ***
reboot_restore: done with file 'auto_settings.sav'
iocRun: All initialization complete
# save things every thirty seconds
create_monitor_set("auto_settings.req", 30, "P=XRD:")
asynSetTraceMask(PEDET1,0,0xff)
2023/11/02 14:30:55.014 XRD:cam1:AsynIO: exception 3, asynExceptionTraceMask
## motorUtil (allstop & alldone)
motorUtilInit("isel:")
## Start any sequence programs
#seq sncxxx,"user=msintsch"
# we don't want any retrys on the axes
dbpf isel:m1.RTRY 0
DBF_SHORT: 0 = 0x0
dbpf isel:m2.RTRY 0
DBF_SHORT: 0 = 0x0
dbpf isel:m3.RTRY 0
DBF_SHORT: 0 = 0x0
dbpf isel:m4.RTRY 0
DBF_SHORT: 0 = 0x0
# Boot complete
2023/11/02 14:30:55.088 PerkinElmer::setTriggerOut, called Acquisition_SetTriggerOutSignalOptions(hAcqDesc_=00000000000002A4, triggerOutSignal=0, triggerOutEPLength=0
triggerOutEPFirstFrame=0, triggerOutEPLastFrame=0
triggerOutEPDelay1=0, triggerOutEPDelay2=0
triggerOutDDDDelay=0, triggerOutEdge=0, triggerOutSaveADefault=0
2023/11/02 14:30:55.090 XRD:cam1:PortName_RBV devAsynOctet::interruptCallback ringSize=0, len=7, callback data:PEDET1\x00
2023/11/02 14:30:55.094 XRD:cam1:ADCoreVersion_RBV devAsynOctet::interruptCallback ringSize=0, len=7, callback data:3.12.1\x00
2023/11/02 14:30:55.098 XRD:cam1:DriverVersion_RBV devAsynOctet::interruptCallback ringSize=0, len=7, callback data:2.11.0\x00
2023/11/02 14:30:55.102 XRD:cam1:ArraySizeX_RBV devAsynInt32::interruptCallbackInput new value=4096
2023/11/02 14:30:55.113 XRD:cam1:PortName_RBV devAsynOctet::processCommon len=6, data:PEDET1
2023/11/02 14:30:55.117 XRD:cam1:ADCoreVersion_RBV devAsynOctet::processCommon len=6, data:3.12.1
2023/11/02 14:30:55.121 XRD:cam1:DriverVersion_RBV devAsynOctet::processCommon len=6, data:2.11.0
2023/11/02 14:30:55.125 XRD:cam1:ArraySizeY_RBV devAsynInt32::interruptCallbackInput new value=4096
2023/11/02 14:30:55.127 XRD:cam1:ArraySizeZ_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.129 XRD:cam1:ArraySize_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.130 XRD:cam1:NDimensions_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.131 XRD:cam1:ColorMode_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.132 XRD:cam1:UniqueId_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.134 XRD:cam1:TimeStamp_RBV devAsynFloat64::interruptCallbackInput new value=0.000000
2023/11/02 14:30:55.137 XRD:cam1:EpicsTSSec_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.144 XRD:cam1:EpicsTSNsec_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.145 XRD:cam1:BayerPattern_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.146 XRD:cam1:ArrayCounter_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.147 XRD:cam1:ArraySizeX_RBV devAsynInt32::getCallbackValue from ringBuffer value=4096
2023/11/02 14:30:55.147 XRD:cam1:ArraySizeY_RBV devAsynInt32::getCallbackValue from ringBuffer value=4096
2023/11/02 14:30:55.148 XRD:cam1:ArraySizeZ_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.148 XRD:cam1:ArraySize_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.149 XRD:cam1:NDimensions_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.151 XRD:cam1:ColorMode_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.156 XRD:cam1:UniqueId_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.157 XRD:cam1:TimeStamp_RBV devAsynFloat64::getCallbackValue from ringBuffer value=0.000000
2023/11/02 14:30:55.157 XRD:cam1:EpicsTSSec_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.158 XRD:cam1:EpicsTSNsec_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.159 XRD:cam1:BayerPattern_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.159 XRD:cam1:ArrayCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.160 XRD:cam1:NDAttributesStatus devAsynInt32::interruptCallbackInput new value=1
2023/11/02 14:30:55.160 XRD:cam1:AcquireBusyCB devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.161 XRD:cam1:NumQueuedArrays devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.161 XRD:cam1:MaxSizeX_RBV devAsynInt32::interruptCallbackInput new value=4096
2023/11/02 14:30:55.162 XRD:cam1:MaxSizeY_RBV devAsynInt32::interruptCallbackInput new value=4096
2023/11/02 14:30:55.162 XRD:cam1:DetectorState_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.163 XRD:cam1:NumImagesCounter_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.163 XRD:cam1:NumExposuresCounter_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.164 XRD:cam1:TimeRemaining_RBV devAsynFloat64::interruptCallbackInput new value=0.000000
2023/11/02 14:30:55.166 XRD:cam1:ShutterStatus_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.171 XRD:cam1:Acquire devAsynInt32::interruptCallbackOutput new value=0
2023/11/02 14:30:55.172 XRD:cam1:Acquire_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:30:55.172 XRD:cam1:StatusMessage_RBV devAsynOctet::interruptCallback ringSize=0, len=1, callback data:\x00
2023/11/02 14:30:55.173 XRD:cam1:StringToServer_RBV devAsynOctet::interruptCallback ringSize=0, len=1, callback data:\x00
2023/11/02 14:30:55.174 XRD:cam1:StringFromServer_RBV devAsynOctet::interruptCallback ringSize=0, len=1, callback data:\x00
2023/11/02 14:30:55.174 XRD:cam1:NDAttributesStatus devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:30:55.175 XRD:cam1:AcquireBusyCB devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.176 XRD:cam1:NumQueuedArrays devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.176 XRD:cam1:MaxSizeX_RBV devAsynInt32::getCallbackValue from ringBuffer value=4096
2023/11/02 14:30:55.176 XRD:cam1:MaxSizeY_RBV devAsynInt32::getCallbackValue from ringBuffer value=4096
2023/11/02 14:30:55.177 XRD:cam1:DetectorState_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.177 XRD:cam1:NumImagesCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.178 XRD:cam1:NumExposuresCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.178 XRD:cam1:TimeRemaining_RBV devAsynFloat64::getCallbackValue from ringBuffer value=0.000000
2023/11/02 14:30:55.179 XRD:cam1:ShutterStatus_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.179 XRD:cam1:Acquire devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.186 XRD:cam1:Acquire_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:30:55.186 XRD:cam1:StatusMessage_RBV devAsynOctet::processCommon len=0, data:2023/11/02 14:30:55.187 XRD:cam1:StringToServer_RBV devAsynOctet::processCommon len=0, data:2023/11/02
14:30:55.187 XRD:cam1:StringFromServer_RBV devAsynOctet::processCommon len=0, data:2023/11/02 14:30:55.188 XRD:cam1:Manufacturer_RBV devAsynOctet::interruptCallback ringSize=0, len=13, callback data:Perkin Elmer\x00
And this is the last console output where I load the bad pixel file and try to acquire an image. After the last line, the IOC is not responding and crashes:
2023/11/02 14:31:28.274 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:28.275 asynPortDriver:readFloat64: function=57, name=POOL_USED_MEMORY, value=64.359550
2023/11/02 14:31:28.276 XRD:cam1:PoolUsedMem devAsynFloat64::processCallbackInput process value=64.359550
2023/11/02 14:31:28.278 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:28.279 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:28.280 asynPortDriver:readInt32: function=54, name=POOL_ALLOC_BUFFERS, value=4
2023/11/02 14:31:28.281 XRD:cam1:PoolAllocBuffers devAsynInt32::processCallbackInput process value=4
2023/11/02 14:31:28.282 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:28.283 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:28.284 asynPortDriver:readInt32: function=55, name=POOL_FREE_BUFFERS, value=0
2023/11/02 14:31:28.286 XRD:cam1:PoolFreeBuffers devAsynInt32::processCallbackInput process value=0
2023/11/02 14:31:28.694 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:28.695 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:28.697 PerkinElmer:readPixelCorrectionFile:, Pixel correction file name: C:\epics\Messdaten\15898_0pF5_PxlMask.his
2023/11/02 14:31:28.704 PerkinElmer:readPixelCorrectionFile: buffer size: 33554432, pBadPixelMap: 1542500416
2023/11/02 14:31:28.721 PerkinElmer:readPixelCorrectionFile: Bad pixel map read in: 0 bad pixels found
2023/11/02 14:31:28.736 PerkinElmer::readPixelCorrectionFile, called Acquisition_CreatePixelMap (pBadPixelMap_=000002435BF0B040, nDataRows=4096, nDataColumns=4096, pCorrList=0000000000000000,
iCorrectionMapSize=1)
2023/11/02 14:31:28.751 PerkinElmer::readPixelCorrectionFile, called Acquisition_CreatePixelMap (pBadPixelMap_=000002435BF0B040, nDataRows=4096, nDataColumns=4096, pCorrList=0000024352A70390,
iCorrectionMapSize=1095759536)
2023/11/02 14:31:28.754 XRD:cam1:PEPixelCorrectionAvailable devAsynInt32::interruptCallbackInput new value=1
2023/11/02 14:31:28.754 PerkinElmer:writeInt32: function=112, value=1
2023/11/02 14:31:28.754 XRD:cam1:PELoadPixelCorrection devAsynInt32::processCallbackOutput process value 1
2023/11/02 14:31:28.755 XRD:cam1:PEPixelCorrectionAvailable devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:31:29.271 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:29.272 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:29.273 asynPortDriver:readFloat64: function=57, name=POOL_USED_MEMORY, value=64.359550
2023/11/02 14:31:29.274 XRD:cam1:PoolUsedMem devAsynFloat64::processCallbackInput process value=64.359550
2023/11/02 14:31:29.276 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:29.277 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:29.278 asynPortDriver:readInt32: function=54, name=POOL_ALLOC_BUFFERS, value=4
2023/11/02 14:31:29.279 XRD:cam1:PoolAllocBuffers devAsynInt32::processCallbackInput process value=4
2023/11/02 14:31:29.281 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:29.282 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:29.283 asynPortDriver:readInt32: function=55, name=POOL_FREE_BUFFERS, value=0
2023/11/02 14:31:29.284 XRD:cam1:PoolFreeBuffers devAsynInt32::processCallbackInput process value=0
2023/11/02 14:31:30.015 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:30.016 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:30.018 PerkinElmer::acquireNormalImage, called Acquisition_DefineDestBuffers(hAcqDesc_=00000000000002A4, pAcqBuffer_=000002433E253040, numFrames=1, uiRows_=4096, uiColumns_=4096)
2023/11/02 14:31:30.272 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:30.336 PerkinElmer::acquireNormalImage, called Acquisition_ResetFrameCnt(hAcqDesc_=00000000000002A4)
2023/11/02 14:31:30.336 PerkinElmer::acquireNormalImage, called Acquisition_SetReady(hAcqDesc_=00000000000002A4, ready=1)
2023/11/02 14:31:30.351 PerkinElmer::acquireNormalImage, called Acquisition_Acquire_Image(hAcqDesc_=00000000000002A4, numFrames=1, numFramesToSkip=0, sequenceOptions=2, pOffsetData=0000000000000000,
pGainData=0000000000000000, pPixelData=0000000000000000)
2023/11/02 14:31:30.351 PerkinElmer:acquireNormalImage: Acquisition started...
2023/11/02 14:31:30.352 XRD:cam1:AcquireBusyCB devAsynInt32::interruptCallbackInput new value=1
2023/11/02 14:31:30.352 XRD:cam1:Acquire devAsynInt32::interruptCallbackOutput new value=1
2023/11/02 14:31:30.352 XRD:cam1:Acquire_RBV devAsynInt32::interruptCallbackInput new value=1
2023/11/02 14:31:30.353 XRD:cam1:NumImagesCounter_RBV devAsynInt32::interruptCallbackInput new value=0
2023/11/02 14:31:30.353 XRD:cam1:DetectorState_RBV devAsynInt32::interruptCallbackInput new value=1
2023/11/02 14:31:30.353 PerkinElmer:writeInt32: function=8, value=1
2023/11/02 14:31:30.353 XRD:cam1:Acquire devAsynInt32::processCallbackOutput process value 1
2023/11/02 14:31:30.354 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:30.354 asynPortDriver:readFloat64: function=57, name=POOL_USED_MEMORY, value=64.359550
2023/11/02 14:31:30.354 XRD:cam1:PoolUsedMem devAsynFloat64::processCallbackInput process value=64.359550
2023/11/02 14:31:30.354 XRD:cam1:AcquireBusyCB devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:31:30.355 XRD:cam1:Acquire_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:31:30.355 XRD:cam1:NumImagesCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2023/11/02 14:31:30.355 XRD:cam1:DetectorState_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:31:30.355 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:30.356 XRD:cam1:Acquire devAsynInt32::getCallbackValue from ringBuffer value=1
2023/11/02 14:31:30.356 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:30.356 asynPortDriver:readInt32: function=54, name=POOL_ALLOC_BUFFERS, value=4
2023/11/02 14:31:30.356 XRD:cam1:PoolAllocBuffers devAsynInt32::processCallbackInput process value=4
2023/11/02 14:31:30.357 PEDET1 addr -1 queueRequest priority 0 not lockHolder
2023/11/02 14:31:30.357 asynManager::portThread port=PEDET1 callback
2023/11/02 14:31:30.357 asynPortDriver:readInt32: function=55, name=POOL_FREE_BUFFERS, value=0
2023/11/02 14:31:30.357 XRD:cam1:PoolFreeBuffers devAsynInt32::processCallbackInput process value=0
2023/11/02 14:31:30.811 PerkinElmer:endFrameCallback: entry ...
2023/11/02 14:31:30.811 PerkinElmer::endFrameCallback, called Acquisition_GetActFrame(hAcqDesc=00000000000002A4, ActAcqFrame=1, ActBuffFrame=1)
2023/11/02 14:31:30.811 PerkinElmer:endFrameCallback: ActAcqFrame = 1, ActBuffFrame = 1
2023/11/02 14:31:30.812 PerkinElmer:endFrameCallback: uiNumBuffersInUse_ = 1
2023/11/02 14:31:30.812 PerkinElmer:endFrameCallback: currBuff = 0, pInput = 000002433E253040
The lines:
2023/11/02 14:31:28.697 PerkinElmer:readPixelCorrectionFile:, Pixel correction file name: C:\epics\Messdaten\15898_0pF5_PxlMask.his
2023/11/02 14:31:28.704 PerkinElmer:readPixelCorrectionFile: buffer size: 33554432, pBadPixelMap: 1542500416
2023/11/02 14:31:28.721 PerkinElmer:readPixelCorrectionFile: Bad pixel map read in: 0 bad pixels found
say that there are 0 bad pixels found. But when I load the very same file into the vendor software XIS, it works. Also loading it into ImageJ as a raw image displays me the bad pixels: I see some pixels with 65535 counts
and all the others 0.
Best regards
Michael