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

Subject: Re: Question regarding asynParamInt32Array
From: Mark Rivers <rivers@cars.uchicago.edu>
To: Jörn Dreyer <j.dreyer@hzdr.de>, EPICS tech-talk <tech-talk@aps.anl.gov>
Date: Thu, 17 May 2018 11:01:26 +0000
These are some places in asyn, areaDetector, and other synApps modules where you can find examples of the asynPortDriver::readInt32Array() method being implemented in derived classes.


corvette:~/devel>find . -name '*.cpp' -exec grep -H readInt32Array {} \;
./measComp-1-4/measCompApp/src/drvC9513.cpp:  virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *data, size_t numRead, size_t *numActual);
./measComp-1-4/measCompApp/src/drvC9513.cpp:asynStatus C9513::readInt32Array(asynUser *pasynUser, epicsInt32 *data,
./measComp-1-4/measCompApp/src/drvC9513.cpp:  static const char* functionName="readInt32Array";
./measComp-1-4/measCompApp/src/drvUSBCTR.cpp:  virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn);
./measComp-1-4/measCompApp/src/drvUSBCTR.cpp:asynStatus USBCTR::readInt32Array(asynUser *pasynUser, epicsInt32 *data,
./measComp-1-4/measCompApp/src/drvUSBCTR.cpp:  static const char* functionName="readInt32Array";
./dxpSITORO/dxpApp/src/NDDxp.cpp:asynStatus NDDxp::readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
./dxpSITORO/dxpApp/src/NDDxp.cpp:    const char *functionName = "readInt32Array";
./std-3-4-1/stdApp/src/drvScaler974.cpp:    virtual asynStatus readInt32Array(asynUser *pasynUser,epicsInt32 *value, size_t nElements, size_t *nIn);
./std-3-4-1/stdApp/src/drvScaler974.cpp:asynStatus Scaler974::readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t maxChannel, size_t *nIn)
./std-3-4-1/stdApp/src/drvScaler974.cpp:    static const char *functionName="readInt32Array";
./mca-7-7/mcaApp/SISSrc/drvSIS38XX.cpp:asynStatus drvSIS38XX::readInt32Array(asynUser *pasynUser, epicsInt32 *data,
./mca-7-7/mcaApp/SISSrc/drvSIS38XX.cpp:  static const char* functionName="readInt32Array";
./mca-7-7/mcaApp/mcaSrc/drvFastSweep.cpp:asynStatus drvFastSweep::readInt32Array(asynUser *pasynUser,
./mca-7-7/mcaApp/AmptekSrc/drvAmptek.cpp:asynStatus drvAmptek::readInt32Array(asynUser *pasynUser,
./mca-7-7/mcaApp/AmptekSrc/drvAmptek.cpp:    static const char *functionName="readInt32Array";
./dxp-5-0/dxpApp/src/NDDxp.cpp:    virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn);
./dxp-5-0/dxpApp/src/NDDxp.cpp:asynStatus NDDxp::readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
./dxp-5-0/dxpApp/src/NDDxp.cpp:    const char *functionName = "readInt32Array";
./areaDetector-3-2/ADCore/ADApp/pluginSrc/NDPluginStdArrays.cpp:asynStatus NDPluginStdArrays::readInt32Array(asynUser *pasynUser, epicsInt32 *value, size_t nElements, size_t *nIn)
./areaDetector-3-2/ADCore/ADApp/pluginSrc/NDPluginStdArrays.cpp:        status = NDPluginDriver::readInt32Array(pasynUser, value, nElements, nIn);
./areaDetector-3-2/ADCore/ADApp/pluginSrc/NDPluginDriver.cpp:asynStatus NDPluginDriver::readInt32Array(asynUser *pasynUser, epicsInt32 *value,
./areaDetector-3-2/ADCore/ADApp/pluginSrc/NDPluginDriver.cpp:    static const char *functionName = "readInt32Array";
./areaDetector-3-2/ADCore/ADApp/pluginSrc/NDPluginDriver.cpp:            status = asynNDArrayDriver::readInt32Array(pasynUser, value, nElements, nIn);
./asyn-4-33/testArrayRingBufferApp/src/testArrayRingBuffer.cpp:    virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
./asyn-4-33/testArrayRingBufferApp/src/testArrayRingBuffer.cpp:asynStatus testArrayRingBuffer::readInt32Array(asynUser *pasynUser, epicsInt32 *value,
./asyn-4-33/testErrorsApp/src/testErrors.cpp:asynStatus testErrors::readInt32Array(asynUser *pasynUser, epicsInt32 *value,

Mark



________________________________
From: Mark Rivers
Sent: Thursday, May 17, 2018 5:53 AM
To: Jörn Dreyer; EPICS tech-talk
Subject: Re: Question regarding asynParamInt32Array


Hi Jörn,


The parameter library in the asynPrtDriver class does not support array data types.  However, there are virtual methods to read, write, and do callbacks for all of the array data types.  For asynInt32Array these are the methods defined in asynPortDriver.h:


    virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
                                        size_t nElements, size_t *nIn);
    virtual asynStatus writeInt32Array(asynUser *pasynUser, epicsInt32 *value,
                                        size_t nElements);
    virtual asynStatus doCallbacksInt32Array(epicsInt32 *value,
                                        size_t nElements, int reason, int addr);

The base class implementation readInt32Array and writeInt32Array simply print an error message, so you need to implement those in your driver if you plan to use them.  The base class implementation of doCallbacksInt32Array is normally sufficient, and you should not need to implement it.

This is all documented here:

https://epics.anl.gov/modules/soft/asyn/R4-33/asynDoxygenHTML/classasyn_port_driver.html

Mark




________________________________
From: tech-talk-bounces@aps.anl.gov <tech-talk-bounces@aps.anl.gov> on behalf of Jörn Dreyer <j.dreyer@hzdr.de>
Sent: Thursday, May 17, 2018 4:14 AM
To: EPICS tech-talk
Subject: Question regarding asynParamInt32Array

Hi,

looking at the supported data types for parameters in asynPortDriver I found
the asynParamInt32Array to match my needs to transfer 256 integers. But how to
set/get the values. There is no getIntegerArrayParam() function like the
getIntegerParam().

Regards,

Jörn



References:
Question regarding asynParamInt32Array Jörn Dreyer
Re: Question regarding asynParamInt32Array Mark Rivers

Navigate by Date:
Prev: Re: Question regarding asynParamInt32Array Mark Rivers
Next: Re: Amptek IOC: Problem with subnet Douglas Henrique C . de Araújo
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  <20182019  2020 
Navigate by Thread:
Prev: Re: Question regarding asynParamInt32Array Mark Rivers
Next: EPICS control of an Edwards STP turbomolecular pump Lucock, Richard M
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  <20182019  2020 
ANJ, 18 May 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·