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  <20202021  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  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: pco Camera USB and IEEE interface
From: "Bradnick, Ben \(Tessella, RAL, TEC\) via Tech-talk" <tech-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>, "Sintschuk, Michael" <michael.sintschuk at bam.de>, "'Ivashkevych, Oksana'" <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Date: Tue, 12 May 2020 15:33:17 +0000
Hi Michael,

I have checked the logs of our IOCs using this PCO driver and haven't experienced the same issue before. We don't make use of the FireWire interface, but I think that should be invisible to the driver.

On top of what Mark has said, is the boot script, built IOC and server identical between your two different PCO setups? Could the server be running out of memory?

Kind regards,
Ben

From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: 12 May 2020 12:06
To: Sintschuk, Michael <michael.sintschuk at bam.de>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; 'tech-talk' <tech-talk at aps.anl.gov>
Subject: Re: pco Camera USB and IEEE interface
 
Hi Michael,


There are 2 placec in Pco.cpp where allocateBuffer is called from, you need to add some debugging to figure out which is generating your error.


The exception is being thrown in this code in DllApi.cpp:


/**
 * Allocate a buffer
 */
void DllApi::allocateBuffer(Handle handle, short* bufferNumber, unsigned long size,
        unsigned short** buffer, Handle* event) throw(PcoException)
{
    int result = doAllocateBuffer(handle, bufferNumber, size, buffer, event);
    *this->trace << "DllApi->AllocateBuffer(" << handle << ", " <<
        *bufferNumber << ", " << size << ", " << *buffer << ", " << event << ") = " <<
        result << std::endl;
    if(result != DllApi::errorNone)
    {
        throw PcoException("allocateBuffer", result);
    }
}



It looks like there is some asynTrace message you can enable to see what is being passed to doAllocateBuffer.   You know that result is a00a3006, so you need to figure out what that error code means.


git grep gives a hint:

corvette:ADPcoWin/pcowinApp/src>git grep 3006
include/PCO_err.h:#define PCO_ERROR_SDKDLL_BADMEMORY                  0x80003006 // Memory area is invalid
include/PCO_errt.h:  "Memory area is invalid.",                       // 0x80003006  PCO_ERROR_SDKDLL_BADMEMORY



Mark



________________________________
From: Sintschuk, Michael <michael.sintschuk at bam.de>
Sent: Tuesday, May 12, 2020 3:21 AM
To: Mark Rivers; 'Ivashkevych, Oksana'
Cc: 'Bradnick, Ben (Tessella,RAL,TEC)'; 'tech-talk'
Subject: AW: pco Camera USB and IEEE interface


Hi Oksana, hi Mark,



I tried the suggestion from Oksana, but with no luck. Still there is the same error.



In the file “Pco.cpp” (located in …/pcowinApp/src/) I found this code, from which the error is coming from (I think…):



/**





* Allocate image buffers and give them to the SDK. We allocate actual memory here,





* rather than using the NDArray memory because the SDK hangs onto the buffers, it only





* shows them to us when there is a frame ready. We must copy the frame out of the buffer





* into an NDArray for use by the rest of the system.





*/





void Pco::allocateImageBuffers() throw(std::bad_alloc, PcoException)





{





// Now allocate the memory and tell the SDK





int bufferSize = this->xCamSize * this->yCamSize;





try





{





for(int i=0; i<Pco::numApiBuffers; i++)





{





if(this->buffers[i].buffer != NULL)





{





_aligned_free(this->buffers[i].buffer);





}





this->buffers[i].buffer = (unsigned short*)_aligned_malloc(bufferSize*sizeof(unsigned short), 0x10000);





this->buffers[i].bufferNumber = DllApi::bufferUnallocated;





this->buffers[i].eventHandle = NULL;





this->api->allocateBuffer(this->camera, &this->buffers[i].bufferNumber,





bufferSize * sizeof(short), &this->buffers[i].buffer,





&this->buffers[i].eventHandle);





this->buffers[i].ready = true;





}





}





catch(std::bad_alloc& e)





{





// Recover from memory allocation failure





{





TakeLock(&this->apiLock);





this->api->stopFrameCapture();





}





this->freeImageBuffers();





throw e;





}





catch(PcoException& e)





{





// Recover from PCO camera failure





{





TakeLock(&this->apiLock);





this->api->stopFrameCapture();





}





this->freeImageBuffers();





throw e;





}



}



Is this a hint maybe?



Michael



Von: Mark Rivers <rivers at cars.uchicago.edu>
Gesendet: Montag, 11. Mai 2020 20:33
An: 'Ivashkevych, Oksana' <oksana at bnl.gov>; Sintschuk, Michael <michael.sintschuk at bam.de>
Cc: 'Bradnick, Ben (Tessella,RAL,TEC)' <ben.bradnick at diamond.ac.uk>; 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: RE: pco Camera USB and IEEE interface



  *   dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDStdArrays.template", "P=PCO4000:,R=image1:,PORT=Image1, 1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1,TYPE=Int16,FTVL=SHORT,NELEMENTS=11059200")



  *   I looked at the datasheet and it says that the pixel depth is 14 bit for this camera, which requires 2 bytes.
  *   4008x2672x2=21,418,752 and you allocated 11,059,200.
  *   Try changing to NELEMENTS=21418752



Michael’s dbLoadRecords is actually fine.  Oksana has computed the size in bytes, but NELEMENTS is not bytes it is the number of elements in the waveform record, and in this case the FTVL is SHORT, so each element is 2 bytes.



Michael has actually allocated somewhat more elements than required, since  4008*2672 = 10709376, which is fewer than he allocated.



But more importantly Michael’s error is from the PCO driver, which knows nothing about the size of the waveform record being used by NDPluginStdArrays.  This problem is in the driver, not the plugins.



Mark







From: Ivashkevych, Oksana <oksana at bnl.gov<mailto:oksana at bnl.gov>>
Sent: Monday, May 11, 2020 12:29 PM
To: Sintschuk, Michael <michael.sintschuk at bam.de<mailto:michael.sintschuk at bam.de>>; Mark Rivers <rivers at cars.uchicago.edu<mailto:rivers at cars.uchicago.edu>>
Cc: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk>>; tech-talk <tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov>>
Subject: RE: pco Camera USB and IEEE interface



Hi Michael,

I did not see this error, but it might be related to the buffer you allocate for you image. It is possible the driver checks unsatisfactory size and reports the error.



You are using CA protocol Image.

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDStdArrays.template", "P=PCO4000:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1,TYPE=Int16,FTVL=SHORT,NELEMENTS=11059200")

with X and Y :

epicsEnvSet("XSIZE",  "4008")

epicsEnvSet("YSIZE",  "2672")



I looked at the datasheet and it says that the pixel depth is 14 bit for this camera, which requires 2 bytes.



4008x2672x2=21,418,752 and you allocated 11,059,200.



Try changing to NELEMENTS=21418752



And see it this fixes the problem.



With best regards,

Oksana









From: Sintschuk, Michael <michael.sintschuk at bam.de<mailto:michael.sintschuk at bam.de>>
Sent: Monday, May 11, 2020 8:50 AM
To: Mark Rivers <rivers at cars.uchicago.edu<mailto:rivers at cars.uchicago.edu>>
Cc: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk>>; Ivashkevych, Oksana <oksana at bnl.gov<mailto:oksana at bnl.gov>>; tech-talk <tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov>>
Subject: AW: pco Camera USB and IEEE interface



Hello again,



I‘ve been working some weeks now with the pco1600-camera connected via GigE. It works fine with the ADPcoWin-IOC. Great software, thanks to the epics-community!

However, I also try to set up a pco4000-camera connected via Firewire. The IOC starts and finds the camera but everytime I try to acquire an image there is the error:



Failed to arm, PCO error, allocateBuffer returned a00a3006



I guess, there are some settings that I’ve missed…

The camera connects fine with the original camware from pco.

I already tried to set the “QSIZE” , “CBUFFS”, “XSIZE” or “YSIZE” values to different parameters, but with no look. Maybe someone already had this issue?

This is my IOC-startup:



C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADPcoWin\iocs\pcowinIOC\iocBoot\iocPco4000Win> C:\epics\inst-7.0.3.1\areaDete

ctor-R3-9\ADPcoWin\iocs\pcowinIOC\bin\windows-x64-static\pcowinApp.exe st.cmd

< envPaths

epicsEnvSet("IOC","iocPcoWin")

epicsEnvSet("TOP","C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC")

epicsEnvSet("ADPCOWIN","C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../..")

epicsEnvSet("SUPPORT","C:/epics/inst-7.0.3.1")

epicsEnvSet("ASYN","C:/epics/inst-7.0.3.1/asyn-R4-39")

epicsEnvSet("AREA_DETECTOR","C:/epics/inst-7.0.3.1/areaDetector-R3-9")

epicsEnvSet("ADSUPPORT","C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADSupport")

epicsEnvSet("ADCORE","C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore")

epicsEnvSet("AUTOSAVE","C:/epics/inst-7.0.3.1/autosave-R5-10")

epicsEnvSet("BUSY","C:/epics/inst-7.0.3.1/busy-R1-7-2")

epicsEnvSet("CALC","C:/epics/inst-7.0.3.1/calc-R3-7-3")

epicsEnvSet("SSCAN","C:/epics/inst-7.0.3.1/sscan-R2-11-3")

epicsEnvSet("EPICS_BASE","C:/epics/base-7.0.3.1")

errlogInit(20000)

dbLoadDatabase("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/dbd/pcowinApp.dbd")

pcowinApp_registerRecordDeviceDriver(pdbbase)

# Prefix for all records

epicsEnvSet("PREFIX", "PCO4000:")

# The port name for the detector

epicsEnvSet("PORT",   "PCO1")

# Larger queue size may be need to stream to disk at full camera speed, up tp 2000

epicsEnvSet("QSIZE",  "20")

# The maximim image width; used for row profiles in the NDPluginStats plugin

epicsEnvSet("XSIZE",  "4008")

# The maximim image height; used for column profiles in the NDPluginStats plugin

epicsEnvSet("YSIZE",  "2672")

# The maximum number of time series 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.3.1/areaDetector-R3-9/ADCore/db")

# Define NELEMENTS to be enough for a 2048x2048x3 (color) image

epicsEnvSet("NELEMENTS", "11059200")

# pcoConfig(const char* portName, int maxBuffers, size_t maxMemory)

pcoConfig("PCO1", 0, 0, 8)

# pcoApiConfig(const char* portName)

pcoApiConfig("PCO1")

# Asyn tracing

asynSetTraceIOMask(PCO1, 0, 2)

#asynSetTraceMask($(PORT), 0, 0xFF)

#asynSetTraceFile($(PORT), 0, "asynTrace.out")

#asynSetTraceInfoMask($(PORT), 0, 0xf)

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco.template", "P=PCO4000:,R=cam

1:,PORT=PCO1,ADDR=0,TIMEOUT=1")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=0")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=1")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=2")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=3")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=4")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=5")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=6")

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../db/pco_device_firmware.template", "

P=PCO4000:,R=cam1:,PORT=PCO1,N=7")

# What other database files need to be loaded?

# Create a standard arrays plugin

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

# Use this line for 8-bit data only

#dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(P

ORT),TYPE=Int8,FTVL=CHAR,NELEMENTS=$(NELEMENTS)")

# Use this line for 8-bit or 16-bit data

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDStdArrays.template", "P=PCO4000:,R=image1:,PORT=Image

1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1,TYPE=Int16,FTVL=SHORT,NELEMENTS=11059200")

# Use this line for 8-bit, 16-bit, or 32-bit data

#dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(P

ORT),TYPE=Int32,FTVL=LONG,NELEMENTS=$(NELEMENTS)")

# Load all other plugins using commonPlugins.cmd

< C:/epics/inst-7.0.3.1/areaDetector-R3-9/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, "PCO1", 0)

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

# Create a TIFF file saving plugin

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

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

# Create a JPEG file saving plugin

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

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

# Create a NeXus file saving plugin

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

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

# Create an HDF5 file saving plugin

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

dbLoadRecords("NDFileHDF5.template",  "P=PCO4000:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,XMLSIZE=2048,NDARRAY_PORT=PCO1"

)

# 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, "PCO1", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDROI.template",       "P=PCO4000:,R=ROI1:,  PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

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

dbLoadRecords("NDROI.template",       "P=PCO4000:,R=ROI2:,  PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

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

dbLoadRecords("NDROI.template",       "P=PCO4000:,R=ROI3:,  PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

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

dbLoadRecords("NDROI.template",       "P=PCO4000:,R=ROI4:,  PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

# Create 8 ROIStat plugins

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

dbLoadRecords("NDROIStat.template",   "P=PCO4000:,R=ROIStat1:  ,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1,NCHANS=

2048")

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

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

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

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

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

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

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

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

# Create a processing plugin

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

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

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

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

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

# Create a scatter plugin

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

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

# Create a gather plugin with 8 ports

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

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

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

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

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

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

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

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

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

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

# Create 5 statistics plugins

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

dbLoadRecords("NDStats.template",     "P=PCO4000:,R=Stats1:,  PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4008,YSIZ

E=2672,NCHANS=2048,NDARRAY_PORT=PCO1")

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

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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=PCO4000:,R=Stats2:,  PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4008,YSIZ

E=2672,NCHANS=2048,NDARRAY_PORT=PCO1")

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

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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=PCO4000:,R=Stats3:,  PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4008,YSIZ

E=2672,NCHANS=2048,NDARRAY_PORT=PCO1")

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

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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=PCO4000:,R=Stats4:,  PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4008,YSIZ

E=2672,NCHANS=2048,NDARRAY_PORT=PCO1")

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

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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=PCO4000:,R=Stats5:,  PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=4008,YSIZ

E=2672,NCHANS=2048,NDARRAY_PORT=PCO1")

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

dbLoadRecords("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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, "PCO1", 0, 0, 0, 0, 0, 5)

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

# Create an overlay plugin with 8 overlays

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

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

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:1:,NAME=ROI1,   SHAPE=1,O=Over1:,XPOS=PCO4000:ROI1:MinX_RBV,YPOS

=PCO4000:ROI1:MinY_RBV,XSIZE=PCO4000:ROI1:SizeX_RBV,YSIZE=PCO4000:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:2:,NAME=ROI2,   SHAPE=1,O=Over1:,XPOS=PCO4000:ROI2:MinX_RBV,YPOS

=PCO4000:ROI2:MinY_RBV,XSIZE=PCO4000:ROI2:SizeX_RBV,YSIZE=PCO4000:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:3:,NAME=ROI3,   SHAPE=1,O=Over1:,XPOS=PCO4000:ROI3:MinX_RBV,YPOS

=PCO4000:ROI3:MinY_RBV,XSIZE=PCO4000:ROI3:SizeX_RBV,YSIZE=PCO4000:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:4:,NAME=ROI4,   SHAPE=1,O=Over1:,XPOS=PCO4000:ROI4:MinX_RBV,YPOS

=PCO4000:ROI4:MinY_RBV,XSIZE=PCO4000:ROI4:SizeX_RBV,YSIZE=PCO4000:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:5:,NAME=Cursor1,SHAPE=1,O=Over1:,XPOS=junk,                  YPO

S=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=4,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:6:,NAME=Cursor2,SHAPE=1,O=Over1:,XPOS=junk,                  YPO

S=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=5,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:7:,NAME=Box1,   SHAPE=1,O=Over1:,XPOS=junk,                  YPO

S=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=6,TIMEOUT=1")

dbLoadRecords("NDOverlayN.template","P=PCO4000:,R=Over1:8:,NAME=Box2,   SHAPE=1,O=Over1:,XPOS=junk,                  YPO

S=junk,                  XSIZE=junk,                   YSIZE=junk,                   PORT=OVER1,ADDR=7,TIMEOUT=1")

# Create 2 color conversion plugins

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

dbLoadRecords("NDColorConvert.template", "P=PCO4000:,R=CC1:,  PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

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

dbLoadRecords("NDColorConvert.template", "P=PCO4000:,R=CC2:,  PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

# Create a circular buffer plugin

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

dbLoadRecords("NDCircularBuff.template", "P=PCO4000:,R=CB1:,  PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PCO1")

# Create an NDAttribute plugin with 8 attributes

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

dbLoadRecords("NDAttribute.template",  "P=PCO4000:,R=Attr1:,    PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=PCO

1")

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

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

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

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

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

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

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

dbLoadRecords("NDAttributeN.template", "P=PCO4000:,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.3.1/areaDetector-R3-9/ADCore/db/NDTimeSeries.template",  "P=PCO4000:,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, "PCO1", 0, 0, 0, 0, 0, 5)

dbLoadRecords("NDFFT.template", "P=PCO4000:, R=FFT1:, PORT=FFT1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=PCO1, NAME=FFT1, NCHANS

=4008")

# Create 2 Codec plugins

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

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

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

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

set_requestfile_path("./")

set_requestfile_path("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/ADApp/Db")

set_requestfile_path("C:/epics/inst-7.0.3.1/areaDetector-R3-9/ADCore/iocBoot")

set_savefile_path("./autosave")

set_pass0_restoreFile("auto_settings.sav")

set_pass1_restoreFile("auto_settings.sav")

save_restoreSet_status_prefix("PCO4000:")

dbLoadRecords("C:/epics/inst-7.0.3.1/autosave-R5-10/asApp/Db/save_restoreStatus.db", "P=PCO4000:")

# Optional: load NDPluginPva plugin

#NDPvaConfigure("PVA1", $(QSIZE), 0, "$(PORT)", 0, $(PREFIX)Pva1:Image, 0, 0, 0)

#dbLoadRecords("NDPva.template",  "P=$(PREFIX),R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")

# 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=$(POR

T)")

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

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

# 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)/edgeApp/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)/adcvApp/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)/barApp/Db")

# Optional: load scan records

dbLoadRecords("C:/epics/inst-7.0.3.1/sscan-R2-11-3/sscanApp/Db/scan.db", "P=PCO4000:,MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20

,MAXPTS4=10,MAXPTSH=10")

set_requestfile_path("C:/epics/inst-7.0.3.1/sscan-R2-11-3/sscanApp/Db")

# Optional: load sseq record for acquisition sequence

dbLoadRecords("C:/epics/inst-7.0.3.1/calc-R3-7-3/calcApp/Db/sseqRecord.db", "P=PCO4000:, S=AcquireSequence")

set_requestfile_path("C:/epics/inst-7.0.3.1/calc-R3-7-3/calcApp/Db")

# Optional: load devIocStats records (requires DEVIOCSTATS module)

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

# Optional: load alive record (requires ALIVE module)

#dbLoadRecords("$(ALIVE)/aliveApp/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.3.1/areaDetector-R3-9/ADPcoWin/iocs/pcowinIOC/../../pcowinApp/Db")

iocInit()

Starting iocInit

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

## EPICS R7.0.3.1

## EPICS Base built Mar  9 2020

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

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'



recDynLinkOut: waiting for CA context

recDynLinkOut: got CA context

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=PCO4000:")

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

pco.4000















                                        : Found 8 devices on camera



epics> 2020/05/11 13:53:06.730 Failed to arm, PCO error, allocateBuffer returned a00a3006





Again, thanks for the help!


 

-- 

This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
 


Replies:
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
References:
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
RE: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
RE: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
RE: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
Re: pco Camera USB and IEEE interface Ivashkevych, Oksana via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
Re: pco Camera USB and IEEE interface Bradnick, Ben (Tessella, RAL, TEC) via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
RE: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
RE: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
AW: pco Camera USB and IEEE interface Sintschuk, Michael via Tech-talk
Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
Next: AW: pco Camera USB and IEEE interface Sintschuk, Michael 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  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Re: pco Camera USB and IEEE interface Mark Rivers via Tech-talk
Next: AW: pco Camera USB and IEEE interface Sintschuk, Michael 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  <20202021  2022  2023  2024 
ANJ, 12 May 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·