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 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
<== Date ==> <== Thread ==>

Subject: RE: Area Detector base class parameters
From: Mark Rivers <rivers@cars.uchicago.edu>
To: Iain Marcuson <Iain.Marcuson@sydorinstruments.com>, "tech-talk@aps.anl.gov >> EPICS Tech Talk" <tech-talk@aps.anl.gov>
Date: Thu, 27 Apr 2017 15:34:59 +0000
If your detector supports binning then you need to handle ADBinX in your derived class writeInt32() method.

Here is an example from ADProsilica:

/** Called when asyn clients call pasynInt32->write().
  * This function performs actions for some parameters, including ADAcquire, ADBinX, etc.
  * For all parameters it sets the value in the parameter library and calls any registered callbacks..
  * \param[in] pasynUser pasynUser structure that encodes the reason and address.
  * \param[in] value Value to write. */
asynStatus prosilica::writeInt32(asynUser *pasynUser, epicsInt32 value)
{
    int function = pasynUser->reason;
    int status = asynSuccess;
    tPvUint32 syncs;
    static const char *functionName = "writeInt32";

    /* Set the parameter and readback in the parameter library.  This may be overwritten when we read back the
     * status at the end, but that's OK */
    status |= setIntegerParam(function, value);

    if ((function == ADBinX) ||
        (function == ADBinY) ||
        (function == ADMinX) ||
        (function == ADSizeX) ||
        (function == ADMinY) ||
        (function == ADSizeY)) {
        /* These commands change the chip readout geometry.  We need to cache them and apply them in the
         * correct order */
        status |= setGeometry();


Mark

________________________________________
From: tech-talk-bounces@aps.anl.gov [tech-talk-bounces@aps.anl.gov] on behalf of Iain Marcuson [Iain.Marcuson@sydorinstruments.com]
Sent: Thursday, April 27, 2017 10:25 AM
To: tech-talk@aps.anl.gov >> EPICS Tech Talk
Subject: Area Detector base class parameters

I have been reviewing the Area Detector code and examining the interface between C and EPICS.  I am not clear on how parameters from the base class are sent to the detector.  For example, the parameter ADBinX is handled by ADDriver::writeInt32(), but nothing in that function actually outputs the new value to the device.  Where is the transmission occurring?

Thank you,

Iain Marcuson.

References:
Area Detector base class parameters Iain Marcuson

Navigate by Date:
Prev: Area Detector base class parameters Iain Marcuson
Next: Re: CA gatway runs away when zero length PV name in UDP search request Kasemir, Kay
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
Navigate by Thread:
Prev: Area Detector base class parameters Iain Marcuson
Next: CSS perspective from OPI gennaro.tortone@na.infn.it
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
ANJ, 28 Apr 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·