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: | AW: ADPerkinElmer Bad Pixel Files |
From: | "Sintschuk, Michael via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu>, tech-talk <tech-talk at aps.anl.gov> |
Date: | Thu, 9 Nov 2023 16:17:44 +0000 |
Hi Mark, thanks for the advice. I see now that I actually read 0 bytes in … I don’t know why.
I will try some debugging next week and post here my results. Michael Von: Mark Rivers <rivers at cars.uchicago.edu>
Hi Michael, The code for reading the bad pixel file and counting the number of bad pixels is pretty simple. You should be able to add some debugging to see what is going wrong. The code currently checks to see if fread() had an error when reading the bad pixel array, but it does not check that the number of bytes read was correct. You could add a check here
and print the number of bytes read: Then inside the loop that counts the bad pixels you could print the value and loop counter for all non-zero pixels. Maybe their value is not 65535 because of an incorrect offset or
datatype. If ImageJ is displaying the bad pixels OK then this code should be able to find them too. Mark From: Tech-talk <tech-talk-bounces at aps.anl.gov>
on behalf of Sintschuk, Michael via Tech-talk <tech-talk at aps.anl.gov> 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 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 |