Hi Michael,
Sorry for not responding to the previous email, but I'm glad to hear your issue is fixed.
You can submit a pull request with this change on the GitHub repository - we have never used the Firewire interface before so hadn't come across this problem.
Kind regards,
Ben
From: Sintschuk, Michael <michael.sintschuk at bam.de>
Sent: 29 May 2020 15:33
To: Mark Rivers <rivers at cars.uchicago.edu>; Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Subject: AW: pco Camera USB and IEEE interface
Hey again,
so with the help of the pco-Support, the camera also works fine with Firewire. The problem was: firewire needs a buffer-size that is a multiple of 4k. It works with the following changes to the function "allocateImageBuffers" in Pco.cpp:
{
// Now allocate the memory and tell the SDK
int bufferSize = this->xCamSize * this->yCamSize;
if (paramInterfaceType == DllApi:: fireWire)
{
int firewireSize = bufferSize;
if(firewireSize % 0x1000) // Force to 4k granularity
{
firewireSize = firewireSize / 0x1000 + 3;
firewireSize *= 0x1000;
}
else
{
firewireSize += 0x2000;
}
bufferSize = firewireSize; // internal buffer used, so adapt size
}
.
.
.
Do not out-comment the lines from my last post, this is wrong!
Best Regards
Michael
-----Ursprüngliche Nachricht-----
Von: Sintschuk, Michael
Gesendet: Dienstag, 19. Mai 2020 14:40
An: Mark Rivers <rivers at cars.uchicago.edu>; Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: AW: pco Camera USB and IEEE interface
Ok, now with out-commenting the following lines, it works without crashing or errors:
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].buffer = NULL;
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;
{
The IOC-process looks good, but I don't know if it is stable for a longer time. Next week we plan to use the camera for a series of measurements, so we will see. Also I didn't tried to run this compilation with the pco.1600 via GigE.
Maybe one of you could tell if the out-commented lines work for every camera-/connection- type. Maybe the best is to make an exceptional query inside the for-loop for the pco.4000 via firewire?
Kind Regards
Michael
-----Ursprüngliche Nachricht-----
Von: Sintschuk, Michael
Gesendet: Dienstag, 19. Mai 2020 11:57
An: 'Mark Rivers' <rivers at cars.uchicago.edu>; 'Bradnick, Ben (Tessella,RAL,TEC)' <ben.bradnick at diamond.ac.uk>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: AW: pco Camera USB and IEEE interface
Hi all,
I have some progress with arming the camera and taking a picture. Unfortunately this works only once. A second arm always results in an IOC-crash.
A former colleague who worked with this camera (not in EPICS) told me not to use _aligned_malloc when allocating memory. So I made the following change in the function allocateImageBuffers in Pco.cpp:
// this->buffers[i].buffer = (unsigned short*)_aligned_malloc(bufferSize*sizeof(unsigned short), 0x10000);
this->buffers[i].buffer = NULL;
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;
With that the camera arms once, but crashes always on the second arm. First arming/acquiring and the last lines of asynTrace are as follows:
2020/05/19 11:21:29.669 [PCO1,-1,173] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:PERF:ACC:CONNECT devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:31.670 [PCO1,-1,151] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:CONNECTED_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:31.670 [PCO1,-1,151] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:CONNECTED_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:1565] [CAS-client,000000000BA28790,20] PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:886] [PCO1,00000000027AF1C0,-1] asynManager::portThread port=PCO1 callback
2020/05/19 11:21:41.336 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:AcquireBusyCB devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:607] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire devAsynInt32::interruptCallbackOutput new value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\asynNDArrayDriver.cpp:694] [PCO1,00000000027AF1C0,-1] asynNDArrayDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\ADDriver.cpp:94] [PCO1,00000000027AF1C0,-1] ADDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/05/19 11:21:41.336 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:AcquireBusyCB devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:41.336 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.291 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.291 [PCO1,-1,80] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:DetectorState_RBV devAsynInt32::interruptCallbackInput new value=2
2020/05/19 11:21:42.291 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.291 [PCO1,-1,80] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:DetectorState_RBV devAsynInt32::getCallbackValue from ringBuffer value=2
2020/05/19 11:21:42.291 [PCO1,-1,78] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:383] [Pco,00000000027B43E0,10] PCO4000:cam1:AcquirePeriod_RBV devAsynFloat64::interruptCallbackInput new value=1.000000
2020/05/19 11:21:42.291 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:1565] [cbLow,000000000B54B7A0,59] PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/19 11:21:42.291 [PCO1,-1,78] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:557] [cbLow,000000000B54B7A0,59] PCO4000:cam1:AcquirePeriod_RBV devAsynFloat64::getCallbackValue from ringBuffer value=1.000000
2020/05/19 11:21:42.291 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:886] [PCO1,00000000027AF1C0,-1] asynManager::portThread port=PCO1 callback
2020/05/19 11:21:42.291 [PCO1,-1,110] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWBINX_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.292 [PCO1,-1,111] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWBINY_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.292 [PCO1,-1,110] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWBINX_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.292 [PCO1,-1,111] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWBINY_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.292 [PCO1,-1,112] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWROIX1_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.292 [PCO1,-1,113] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWROIY1_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.292 [PCO1,-1,114] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWROIX2_RBV devAsynInt32::interruptCallbackInput new value=4008
2020/05/19 11:21:42.292 [PCO1,-1,115] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:HWROIY2_RBV devAsynInt32::interruptCallbackInput new value=2672
2020/05/19 11:21:42.292 [PCO1,-1,112] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWROIX1_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.292 [PCO1,-1,113] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWROIY1_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.292 [PCO1,-1,116] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:XCAMSIZE_RBV devAsynInt32::interruptCallbackInput new value=4008
2020/05/19 11:21:42.292 [PCO1,-1,117] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:YCAMSIZE_RBV devAsynInt32::interruptCallbackInput new value=2672
2020/05/19 11:21:42.292 [PCO1,-1,114] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWROIX2_RBV devAsynInt32::getCallbackValue from ringBuffer value=4008
2020/05/19 11:21:42.292 [PCO1,-1,115] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:HWROIY2_RBV devAsynInt32::getCallbackValue from ringBuffer value=2672
2020/05/19 11:21:42.292 [PCO1,-1,116] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:XCAMSIZE_RBV devAsynInt32::getCallbackValue from ringBuffer value=4008
2020/05/19 11:21:42.292 [PCO1,-1,117] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:YCAMSIZE_RBV devAsynInt32::getCallbackValue from ringBuffer value=2672
2020/05/19 11:21:42.293 [PCO1,-1,150] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ARM_COMPLETE devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.293 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:PERF:ACC:START_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:42.293 [PCO1,-1,150] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ARM_COMPLETE devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.293 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:PERF:ACC:START_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:42.293 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:1565] [cbLow,000000000B54B7A0,59] PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/19 11:21:42.293 [PCO1,-1,14] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ArraySize_RBV devAsynInt32::interruptCallbackInput new value=21418752
2020/05/19 11:21:42.293 [PCO1,-1,11] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ArraySizeX_RBV devAsynInt32::interruptCallbackInput new value=4008
2020/05/19 11:21:42.293 [PCO1,-1,12] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ArraySizeY_RBV devAsynInt32::interruptCallbackInput new value=2672
2020/05/19 11:21:42.293 [PCO1,-1,14] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ArraySize_RBV devAsynInt32::getCallbackValue from ringBuffer value=21418752
2020/05/19 11:21:42.293 [PCO1,-1,11] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ArraySizeX_RBV devAsynInt32::getCallbackValue from ringBuffer value=4008
2020/05/19 11:21:42.293 [PCO1,-1,12] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ArraySizeY_RBV devAsynInt32::getCallbackValue from ringBuffer value=2672
2020/05/19 11:21:42.293 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\ADDriver.cpp:94] [PCO1,00000000027AF1C0,-1] ADDriver:writeInt32: function=174, paramName=PCO_PERFACC_ARM, value=1
2020/05/19 11:21:42.293 [PCO1,-1,174] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:PERF:ACC:ARM devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:42.293 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:886] [PCO1,00000000027AF1C0,-1] asynManager::portThread port=PCO1 callback
2020/05/19 11:21:42.294 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\ADDriver.cpp:94] [PCO1,00000000027AF1C0,-1] ADDriver:writeInt32: function=175, paramName=PCO_PERFACC_START, value=1
2020/05/19 11:21:42.294 [PCO1,-1,175] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:PERF:ACC:START devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:42.306 [PCO1,-1,97] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:383] [Pco,00000000027B43E0,10] PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::interruptCallbackInput new value=34.000000
2020/05/19 11:21:42.306 [PCO1,-1,97] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:557] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::getCallbackValue from ringBuffer value=34.000000
2020/05/19 11:21:44.696 [PCO1,-1,26] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ArrayCounter_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.696 [PCO1,-1,76] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:NumImagesCounter_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.696 [PCO1,-1,162] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:PERF:CNT:GOODFRAME_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.696 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:PERF:ACC:GOODFRAME_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.696 [PCO1,-1,105] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:IMAGE_NUMBER_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.696 [PCO1,-1,80] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:DetectorState_RBV devAsynInt32::interruptCallbackInput new value=0
2020/05/19 11:21:44.696 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:AcquireBusyCB devAsynInt32::interruptCallbackInput new value=0
2020/05/19 11:21:44.696 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:607] [Pco,00000000027B43E0,10] PCO4000:cam1:Acquire devAsynInt32::interruptCallbackOutput new value=0
2020/05/19 11:21:44.696 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:Acquire_RBV devAsynInt32::interruptCallbackInput new value=0
2020/05/19 11:21:44.696 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1_updateQueuedArrayCount,0000000000481ED0,50] PCO4000:cam1:NumQueuedArrays devAsynInt32::interruptCallbackInput new value=2
2020/05/19 11:21:44.697 [PCO1,-1,26] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ArrayCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.697 [PCO1,-1,76] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:NumImagesCounter_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.697 [PCO1,-1,162] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:PERF:CNT:GOODFRAME_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.697 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:PERF:ACC:GOODFRAME_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.697 [PCO1,-1,105] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:IMAGE_NUMBER_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.697 [PCO1,-1,80] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:DetectorState_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:44.697 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:AcquireBusyCB devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:44.697 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:44.697 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire_RBV devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:44.697 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:NumQueuedArrays devAsynInt32::getCallbackValue from ringBuffer value=2
2020/05/19 11:21:44.698 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:1565] [cbLow,000000000B54B7A0,59] PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/19 11:21:44.698 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:886] [PCO1,00000000027AF1C0,-1] asynManager::portThread port=PCO1 callback
2020/05/19 11:21:44.698 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\ADDriver.cpp:94] [PCO1,00000000027AF1C0,-1] ADDriver:writeInt32: function=176, paramName=PCO_PERFACC_GOODFRAME, value=1
2020/05/19 11:21:44.698 [PCO1,-1,176] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:PERF:ACC:GOODFRAME devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:44.752 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1_updateQueuedArrayCount,0000000000481ED0,50] PCO4000:cam1:NumQueuedArrays devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:44.752 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:NumQueuedArrays devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:44.807 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1_updateQueuedArrayCount,0000000000481ED0,50] PCO4000:cam1:NumQueuedArrays devAsynInt32::interruptCallbackInput new value=0
2020/05/19 11:21:44.807 [PCO1,-1,59] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:NumQueuedArrays devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:45.062 [PCO1,-1,150] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:ARM_COMPLETE devAsynInt32::interruptCallbackInput new value=0
2020/05/19 11:21:45.062 [PCO1,-1,150] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ARM_COMPLETE devAsynInt32::getCallbackValue from ringBuffer value=0
2020/05/19 11:21:47.329 [PCO1,-1,88] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:383] [Pco,00000000027B43E0,10] PCO4000:cam1:Temperature_RBV devAsynFloat64::interruptCallbackInput new value=-8.500000
2020/05/19 11:21:47.329 [PCO1,-1,97] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:383] [Pco,00000000027B43E0,10] PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::interruptCallbackInput new value=35.000000
2020/05/19 11:21:47.329 [PCO1,-1,88] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:557] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Temperature_RBV devAsynFloat64::getCallbackValue from ringBuffer value=-8.500000
2020/05/19 11:21:47.329 [PCO1,-1,97] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynFloat64.c:557] [cbLow,000000000B54B7A0,59] PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::getCallbackValue from ringBuffer value=35.000000
2020/05/19 11:21:47.329 [PCO1,-1,96] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:CAM_RAM_USE_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:47.329 [PCO1,-1,149] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:CAM_RAM_USE_FRAMES_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:47.329 [PCO1,-1,96] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:CAM_RAM_USE_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:47.329 [PCO1,-1,149] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:CAM_RAM_USE_FRAMES_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:47.329 [PCO1,-1,155] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [Pco,00000000027B43E0,10] PCO4000:cam1:BUFFERS_IN_USE_RBV devAsynInt32::interruptCallbackInput new value=3
2020/05/19 11:21:47.329 [PCO1,-1,155] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:BUFFERS_IN_USE_RBV devAsynInt32::getCallbackValue from ringBuffer value=3
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:1565] [CAS-client,000000000BA28790,20] PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\asynDriver\asynManager.c:886] [PCO1,00000000027AF1C0,-1] asynManager::portThread port=PCO1 callback
2020/05/19 11:21:55.170 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:AcquireBusyCB devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:607] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire devAsynInt32::interruptCallbackOutput new value=1
2020/05/19 11:21:55.170 [PCO1,-1,9] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:AcquireBusyCB devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:556] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire_RBV devAsynInt32::interruptCallbackInput new value=1
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\asynNDArrayDriver.cpp:694] [PCO1,00000000027AF1C0,-1] asynNDArrayDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\areaDetector-R3-9\ADCore\ADApp\ADSrc\ADDriver.cpp:94] [PCO1,00000000027AF1C0,-1] ADDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/05/19 11:21:55.170 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:530] [PCO1,00000000027AF1C0,-1] PCO4000:cam1:Acquire devAsynInt32::processCallbackOutput process value 1
2020/05/19 11:21:55.171 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire_RBV devAsynInt32::getCallbackValue from ringBuffer value=1
2020/05/19 11:21:55.171 [PCO1,-1,8] [C:\epics\inst-7.0.3.1\asyn-R4-39\asyn\devEpics\devAsynInt32.c:796] [cbLow,000000000B54B7A0,59] PCO4000:cam1:Acquire devAsynInt32::getCallbackValue from ringBuffer value=1
-----Ursprüngliche Nachricht-----
Von: Sintschuk, Michael
Gesendet: Dienstag, 19. Mai 2020 09:03
An: 'Mark Rivers' <rivers at cars.uchicago.edu>; Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: AW: pco Camera USB and IEEE interface
Hi Ben, hi Mark,
to answer your two questions:
1)@Ben: yes, CamWare is successfully connecting to the camera and is also taking pictures with no issues.
2)@Mark: I don't think that the camera has special features. We are actually planning to change to a newer pco.edge camera by the end of this year/beginning next year. This one with Cameralink! Until then I want to try to debug the pco.4000 with Firewire.
Today I found out, that my last tech-talk entry was wrong! Without trying to arm, the pco.4000 IOC-startup (Firewire) is the same as the pco.1600 IOC-startup (GigE). Only after the first arm was done, the correct XCAMSIZE/ YCAMSIZE/etc. of the pco.1600 are
shown. Since the arm of the pco.4000 goes wrong ("Memory area is invalid.") the camera parameters are not shown. But you can see them in the asynTrace.out.
I will send the whole asynTrace of the pco.4000 in a separate e-mail to you 3 since tech-talk is not allowing attachments bigger than 512 KB. There I try to once arm the camera after IOC-init. You can see this from line ~3480, that the correct Size_X/Size_Y
are shown (4008/2672). After that the exception "Failed to arm, PCO error, allocateBuffer returned a00a3006" is thrown.
The function "doArm" in /pcowinApp/src/Pco.cpp calls allocateImageBuffers() (Line 2230), which in the end calls the function PCO_AllocateBuffer from the sdk. I tried to recompile the package with the change:
bufferSize * sizeof(unsigned int) for example (instead of bufferSize * sizeof(short) )... but with no luck. Only the error-code changes to 800a3006 (instead of a00a3006). Don't know what that means.
Maybe someone of you has a proposal I can try.
Regards
Michael
-----Ursprüngliche Nachricht-----
Von: Mark Rivers <rivers at cars.uchicago.edu>
Gesendet: Montag, 18. Mai 2020 17:03
An: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; Sintschuk, Michael <michael.sintschuk at bam.de>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: Re: pco Camera USB and IEEE interface
Hi Michael,
Does your PCO Firewire camera have any special features? If not I might suggest replacing it with a GigE or USB3 camera that is GenICam compliant. These interfaces are significantly faster and have good support in areaDetector. Depending on the number of
pixels in your detector one of these replacements may well be under $500. Tracking down the problem with the PCO Firewire camera could easily cost more in effort than the cost of replacing it.
Mark
________________________________
From: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>
Sent: Monday, May 18, 2020 9:39 AM
To: Sintschuk, Michael; Mark Rivers; 'Ivashkevych, Oksana'
Cc: 'tech-talk'
Subject: Re: pco Camera USB and IEEE interface
Hi Michael,
Unfortunately we don't have any cameras with the FireWire interface at our facility so cannot try and reproduce this problem. Does the CamWare software successfully connect and communicate with the camera?
You could also try and create a simple C++ application to perform some simple test calls from the SDK (e.g. PCO_OpenCamera and PCO_GetCameraDescription) to see if you get sensible responses.
Kind regards,
Ben
________________________________
From: Sintschuk, Michael <michael.sintschuk at bam.de>
Sent: 14 May 2020 16:31
To: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk>; Mark Rivers <rivers at cars.uchicago.edu>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Subject: AW: pco Camera USB and IEEE interface
Hi all,
when running the IOC to connect the pco.1600 via GigE, I noticed that the PVs PCO1600:cam1:XCAMSIZE_RBV and PCO1600:cam1:YCAMSIZE_RBV are set to 1600 x 1200 from start on. This is correct for the pco.1600 and it is working fine.
When I run the IOC to connect the pco.4000 via Firewire, the PVs PCO4000:cam1:XCAMSIZE_RBV and PCO4000:cam1:YCAMSIZE_RBV are set to: 1280 x 1024. This is not correct, since the pco.4000 has x-y-size that is 4008 x 2672. I think the size 1280 x 1024 is coming
from the file in .ADPcoWin/pcowinApp/src/Pco.cpp , lines 140 and 141:
paramXCamSize(this, "PCO_XCAMSIZE", 1280)
paramYCamSize(this, "PCO_YCAMSIZE", 1024)
I think, these are the default settings, that are overwritten when the camera is set up fine (see pco.1600 .).
I changed paramXCamSize and paramYCamSize in Pco.cpp to 4008 x 2672 and recompiled ADPcoWin. When running the IOC, the PCO4000:cam1:XCAMSIZE_RBV and PCO4000:cam1:YCAMSIZE_RBV are 4008 x 2672 from start on but I still get the allocateBuffer error .
In the Pco.cpp there is also the function "Pco::allocateImageBuffers()" (Line 1924) that is calculating:
int bufferSize = this->xCamSize * this->yCamSize;
but since the default start-up is not setting the paramXCamSize and paramYCamSize correct, the Buffer allocation fails, at least this is now my assumption. So I think the communication via Firewire is not working correctly. As I understood no one is using these
cameras via Firewire, so maybe it was never tested?
Best regards
Michael
Von: Sintschuk, Michael
Gesendet: Dienstag, 12. Mai 2020 19:05
An: 'Bradnick, Ben (Tessella,RAL,TEC)' <ben.bradnick at diamond.ac.uk>; Mark Rivers <rivers at cars.uchicago.edu>; 'Ivashkevych, Oksana' <oksana at bnl.gov>
Cc: 'tech-talk' <tech-talk at aps.anl.gov>
Betreff: AW: pco Camera USB and IEEE interface
Hi Mark, hi Ben,
I added these lines for asynTrace:
asynSetTraceMask("$(PORT)", -1,0xff)
asynSetTraceIOMask("$(PORT)", -1,0x2)
and get the following messages when I try to arm the camera (the first and last 2 messages are from the temperature controller of the camera, it reports continuously):
2020/05/12 18:27:22.392 PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::interruptCall
backInput new value=31.000000
2020/05/12 18:27:22.416 PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::getCallbackVa
lue from ringBuffer value=31.000000
2020/05/12 18:27:23.539 PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/12 18:27:23.558 asynManager::portThread port=PCO1 callback
2020/05/12 18:27:23.571 PCO4000:cam1:ARM_MODE_RBV devAsynInt32::interruptCallbac
kInput new value=1
2020/05/12 18:27:23.588 ADDriver:writeInt32: function=104, paramName=PCO_ARM_MOD
E, value=1
2020/05/12 18:27:23.603 PCO4000:cam1:ARM_MODE_RBV devAsynInt32::getCallbackValue
from ringBuffer value=1
2020/05/12 18:27:23.612 PCO4000:cam1:ARM_MODE devAsynInt32::processCallbackOutpu
t process value 1
2020/05/12 18:27:23.818 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::interruptCal
lbackInput new value=1
2020/05/12 18:27:23.826 PCO4000:cam1:DetectorState_RBV devAsynInt32::interruptCa
llbackInput new value=2
2020/05/12 18:27:23.831 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::getCallbackV
alue from ringBuffer value=1
2020/05/12 18:27:23.838 PCO4000:cam1:DetectorState_RBV devAsynInt32::getCallback
Value from ringBuffer value=2
2020/05/12 18:27:23.844 PCO1 addr -1 queueRequest priority 0 not lockHolder
2020/05/12 18:27:23.847 PCO4000:cam1:ARM_MODE_RBV devAsynInt32::interruptCallbac
kInput new value=0
2020/05/12 18:27:23.851 asynManager::portThread port=PCO1 callback
2020/05/12 18:27:23.853 PCO4000:cam1:ARM_MODE_RBV devAsynInt32::getCallbackValue
from ringBuffer value=0
2020/05/12 18:27:24.067 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::interruptCal
lbackInput new value=2
2020/05/12 18:27:24.080 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::getCallbackV
alue from ringBuffer value=2
2020/05/12 18:27:24.091 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::interruptCal
lbackInput new value=1
2020/05/12 18:27:24.101 ADDriver:writeInt32: function=174, paramName=PCO_PERFACC
_ARM, value=1
2020/05/12 18:27:24.110 PCO4000:cam1:PERF:ACC:ARM_RBV devAsynInt32::getCallbackV
alue from ringBuffer value=1
2020/05/12 18:27:24.118 PCO4000:cam1:PERF:ACC:ARM devAsynInt32::processCallbackO
utput process value 1
2020/05/12 18:27:24.123 Failed to arm, PCO error, allocateBuffer returned a00a30
06
2020/05/12 18:27:24.127 PCO4000:cam1:StatusMessage_RBV devAsynOctet::interruptCa
llback ringSize=0, len=44, callback data:PCO error, allocateBuffer returned a00a
3006\000
2020/05/12 18:27:24.135 PCO4000:cam1:DetectorState_RBV devAsynInt32::interruptCa
llbackInput new value=0
2020/05/12 18:27:24.141 PCO4000:cam1:StatusMessage_RBV devAsynOctet::processComm
on len=43, data:PCO error, allocateBuffer returned a00a3006
2020/05/12 18:27:24.148 PCO4000:cam1:DetectorState_RBV devAsynInt32::getCallback
Value from ringBuffer value=0
2020/05/12 18:27:26.425 PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::interruptCall
backInput new value=32.000000
2020/05/12 18:27:26.449 PCO4000:cam1:ELEC_TEMP_RBV devAsynFloat64::getCallbackVa
lue from ringBuffer value=32.000000
@Ben
I use the same pcowinIOC that compiled with the ADPcoWin-module for both cameras. The location for "pcowinApp.exe" /ADPcoWin/iocs/pcowinIOC/bin/windows-x64-static/. is for both start-ups the same. I only made 2 folders in /ADPcoWin/iocs/pcowinIOC/iocBoot/.
("iocPco1600Win" and "iocPco4000Win") for the different start-up scripts and autosave. I also tried to separate them to have each his own ./bin/windows-x64-static/. but the results were the same.
When I check the memory usage in the Task-Manager, it tells me that I user ~15% of the RAM when the IOC is up.
Von: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk>>
Gesendet: Dienstag, 12. Mai 2020 17:33
An: Mark Rivers <rivers at cars.uchicago.edu<mailto:rivers at cars.uchicago.edu>>; Sintschuk, Michael <michael.sintschuk at bam.de<mailto:michael.sintschuk at bam.de>>; 'Ivashkevych, Oksana' <oksana at bnl.gov<mailto:oksana at bnl.gov>>
Cc: 'tech-talk' <tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov>>
Betreff: Re: pco Camera USB and IEEE interface
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<mailto:rivers at cars.uchicago.edu>>
Sent: 12 May 2020 12:06
To: Sintschuk, Michael <michael.sintschuk at bam.de<mailto:michael.sintschuk at bam.de>>; 'Ivashkevych, Oksana' <oksana at bnl.gov<mailto:oksana at bnl.gov>>
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,
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<mailto: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
this->short*)_aligned_malloc(bufferSize*sizeof(unsigned short),
this->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<mailto:rivers at cars.uchicago.edu>>
Gesendet: Montag, 11. Mai 2020 20:33
An: 'Ivashkevych, Oksana' <oksana at bnl.gov<mailto:oksana at bnl.gov>>; Sintschuk, Michael <michael.sintschuk at bam.de<mailto:michael.sintschuk at bam.de>>
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>>
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<mailto:oksana at bnl.gov%3cmailto: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<mailto:michael.sintschuk at bam.de%3cmailto:michael.sintschuk at bam.de>>>; Mark Rivers <rivers at cars.uchicago.edu<mailto:rivers at cars.uchicago.edu<mailto:rivers at cars.uchicago.edu%3cmailto:rivers at cars.uchicago.edu>>>
Cc: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk%3cmailto:ben.bradnick at diamond.ac.uk>>>; tech-talk <tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov%3cmailto: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<mailto:michael.sintschuk at bam.de%3cmailto: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<mailto:rivers at cars.uchicago.edu%3cmailto:rivers at cars.uchicago.edu>>>
Cc: Bradnick, Ben (Tessella,RAL,TEC) <ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk<mailto:ben.bradnick at diamond.ac.uk%3cmailto:ben.bradnick at diamond.ac.uk>>>; Ivashkevych, Oksana <oksana at bnl.gov<mailto:oksana at bnl.gov<mailto:oksana at bnl.gov%3cmailto:oksana at bnl.gov>>>;
tech-talk <tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov<mailto:tech-talk at aps.anl.gov%3cmailto: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
epics> 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
--
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
--
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
|