EPICS Home

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  <20172018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: EPICS PV for data in Area Detector
From: Mark Rivers <[email protected]>
To: Iain Marcuson <[email protected]>, "[email protected] >> EPICS Tech Talk" <[email protected]>
Date: Thu, 4 May 2017 12:56:02 +0000
Hi Iain,

> I set $(P)$(R)ArrayCallbacks and $(P)$(R)EnableCallbacks to Enable and verified that with caget. 
> TimeStamp_RBV and UniqueId_RBV do not update.

I suspect the problem could be that you used the wrong $(P)$(R)ArrayCallbacks record.  That must be set using the $(R) for the detector driver (perhaps it is cam1:), while $(P)$(R)EnableCallbacks must be set for the $(R) of the NDPluginStdArrays plugin (perhaps image1:).  The former tells your driver to do callbacks to plugins (and controls the if(arrayCallbacks) you said was false.  The latter controls whether the NDPluginStdArrays plugin subscribes to callbacks from the driver.

If you set $(P)$(R)ArrayCallbacks for the NDPluginStdArrays plugin instead that would control whether that plugin does callbacks to any downstream plugins subscribed to it.  That would be an unusual thing to do, since normal the NDPluginStdArrays plugin is not connected to any downstream plugins.

Mark

________________________________________
From: Iain Marcuson [[email protected]]
Sent: Thursday, May 04, 2017 7:25 AM
To: Mark Rivers; [email protected] >> EPICS Tech Talk
Subject: RE: EPICS PV for data in Area Detector

> > I note there are no NDArrayCallbacks.
>
> Please explain exactly what you mean by that statement.  What are you
> observing?
>
> - Is your driver calling doCallbacksGenericPointer()?

The code is based on Mythen, and looks like:

getIntegerParam(NDArrayCallbacks, &arrayCallbacks);
if (arrayCallbacks) {
        this->unlock();
        doCallbacksGenericPointer(pImage, NDArrayData, 0);
        this->lock();
}

I put some printf()s to trace the flow and found that the if statement doesn't evaluate to true

>
> - Are ArrayCallbacks enabled in your driver?
>

> - Is the NDPluginStdArrays plugin enabled (EnableCallbacks)?  Is it configured
> to get its data from your driver?  Are the TimeStamp_RBV and UniqueId_RBV
> records in NDPluginStdArrays updating?
>

I set $(P)$(R)ArrayCallbacks and $(P)$(R)EnableCallbacks to Enable and verified that with caget. TimeStamp_RBV and UniqueId_RBV do not update.

> > When I look at $(P)$(R)ArrayData, it appears to be all zeroes except the
> first value
>
> How are you looking at $(P)$(R)ArrayData, i.e. with what tool?
>

I am using caget -# 100 $(P)$(R)ArrayData.

> -----Original Message-----
> From: Mark Rivers [mailto:[email protected]]
> Sent: Wednesday, May 03, 2017 9:52 PM
> To: Iain Marcuson <[email protected]>; tech-
> [email protected] >> EPICS Tech Talk <[email protected]>
> Subject: RE: EPICS PV for data in Area Detector
>
> Hi Iain,
>
> Some questions:
>
> > I note there are no NDArrayCallbacks.
>
> Please explain exactly what you mean by that statement.  What are you
> observing?
>
> - Is your driver calling doCallbacksGenericPointer()?
>
> - Are ArrayCallbacks enabled in your driver?
>
> - Is the NDPluginStdArrays plugin enabled (EnableCallbacks)?  Is it configured
> to get its data from your driver?  Are the TimeStamp_RBV and UniqueId_RBV
> records in NDPluginStdArrays updating?
>
> > When I look at $(P)$(R)ArrayData, it appears to be all zeroes except the
> first value
>
> How are you looking at $(P)$(R)ArrayData, i.e. with what tool?
>
> Mark
>
>
> ________________________________________
> From: [email protected] [[email protected]] on
> behalf of Iain Marcuson [[email protected]]
> Sent: Wednesday, May 03, 2017 3:43 PM
> To: [email protected] >> EPICS Tech Talk
> Subject: EPICS PV for data in Area Detector
>
> I am trying to transfer pixel values from an Area Detector driver's private
> variable into an NDArray for viewing with ImageJ.  I have verified that the
> ImageJ plugin works.  I have also verified that the test data are generated
> correctly.  My code follows that of the Mythen driver, except with two
> dimensions instead of one.  I alloc() an NDArray and copy the pixel values
> over.  I have verified that the pixel values are transferred correctly to the
> pImage.  I note there are no NDArrayCallbacks.  When I look at
> $(P)$(R)ArrayData, it appears to be all zeroes except the first value, which
> appears to increment on both acquisition and "caget $(P)$(R)ArrayData".
> What might I be missing?
>
> Thank you,
>
> Iain.

Replies:
RE: EPICS PV for data in Area Detector Iain Marcuson
References:
EPICS PV for data in Area Detector Iain Marcuson
RE: EPICS PV for data in Area Detector Mark Rivers
RE: EPICS PV for data in Area Detector Iain Marcuson

Navigate by Date:
Prev: RE: EPICS PV for data in Area Detector Iain Marcuson
Next: RE: Question about build StreamDevice application Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: EPICS PV for data in Area Detector Iain Marcuson
Next: RE: EPICS PV for data in Area Detector Iain Marcuson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024