From 10c4294f89aecefbaa048b4f883f13e20ab8b638 Mon Sep 17 00:00:00 2001
From: rivers
areaDetector Plugin NDPluginStdArrays
- January 30, 2009
+ August 3, 2009
Mark Rivers
@@ -22,8 +22,6 @@
Overview
@@ -40,31 +38,8 @@
this plugin inherits from NDPluginDriver
it also provides additional information on the array data (e.g. number of dimensions
and dimension data) that are made available as EPICS PVs so that clients can correctly
- interpret the array data. The NDPluginStdArrays public interface is defined in NDPluginStdArrays.h
- as follows:
class NDPluginStdArrays : public NDPluginDriver {
-public:
- NDPluginStdArrays(const char *portName, int queueSize, int blockingCallbacks,
- const char *NDArrayPort, int NDArrayAddr,
- size_t maxMemory);
-
- /* These methods override the virtual methods in the base class */
- void processCallbacks(NDArray *pArray);
- virtual asynStatus readInt8Array(asynUser *pasynUser, epicsInt8 *value,
- size_t nElements, size_t *nIn);
- virtual asynStatus readInt16Array(asynUser *pasynUser, epicsInt16 *value,
- size_t nElements, size_t *nIn);
- virtual asynStatus readInt32Array(asynUser *pasynUser, epicsInt32 *value,
- size_t nElements, size_t *nIn);
- virtual asynStatus readFloat32Array(asynUser *pasynUser, epicsFloat32 *value,
- size_t nElements, size_t *nIn);
- virtual asynStatus readFloat64Array(asynUser *pasynUser, epicsFloat64 *value,
- size_t nElements, size_t *nIn);
- asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
- const char **pptypeName, size_t *psize);
-...
-}
-
+ interpret the array data. The
+ NDPluginStdArrays class documentation describes this class in detail.
NDPluginStdArrays defines the following parameters. It also implements all of the standard plugin parameters from NDPluginDriver @@ -120,68 +95,19 @@ public:
- The NDPluginStdArrays plugin is created with the following command, either from - C/C++ or from the EPICS IOC shell. -
-drvNDStdArraysConfigure(const char *portName, int queueSize, int blockingCallbacks, - const char *NDArrayPort, int NDArrayAddr, size_t maxMemory) + The NDPluginStdArrays plugin is created with the NDStdArraysConfigure command, either + from C/C++ or from the EPICS IOC shell. +NDStdArraysConfigure (const char *portName, int queueSize, int blockingCallbacks, + const char *NDArrayPort, int NDArrayAddr, size_t maxMemory, + int priority, int stackSize)-
| - Argument | -- Description | -
|---|---|
- portName |
- - The name of the asyn port for this plugin. - | -
- queueSize |
- - The maximum number of NDArray objects that can be queued for processing. Passed - to the NDPluginDriver base class constructor. - | -
- blockingCallbacks |
- - Flag controlling whether callbacks block. Passed to the NDPluginDriver base class - constructor. - | -
- NDArrayPort |
- - The name of the asyn port of the driver that will provide the NDArray data. Passed - to the NDPluginDriver base class constructor. - | -
- NDArrayAddr |
- - The asyn addr of the asyn port of the driver that will provide the NDArray data. - Passed to the NDPluginDriver base class constructor. - | -
- maxMemory |
- - Maximum number of bytes of memory to be allocated from the NDArrayPool. Passed to - the constructor for the NDPluginDriver base class. The NDStdArrays plugin allocates - 2 NDArray objects, so this should be at least twice the size of the largest NDArray - to be used. | -
+ For details on the meaning of the parameters to this function refer to the detailed + documentation on the NDStdArraysConfigure function in the + NDPluginStdArrays.cpp documentation and in the documentation for the constructor + for the NDPluginStdArrays + class. +
@@ -196,64 +122,5 @@ public:

- There is an IDL procedure called
- epics_ad_display that can be used to display 2-dimensional array data that
- the NDStdArrays plugin sends to EPICS. This IDL client is available as source code
- (which requires an IDL license), and also as a pre-built IDL .sav file that can
- be run for free under the IDL Virtual Machine. This IDL program can run on any machine
- that IDL runs on, and that has the ezcaIDL shareable library built for it. This
- includes Windows, Linux, Solaris, and Mac. epics_ad_display is included
- in the CARS IDL imaging
- software. It is also available in the Viewers directory in the areaDetector
- application, where there is a README file describing how to use it.
-
- The control window for epics_ad_display is shown below. It has a field
- to input the base name of the EPICS PVs with the image data. It also has fields
- to enable/display the IDL display update, to change the display mode, to autoscale
- the intensity, and to invert the image in the Y direction. If autoscale is set to
- No then manual scaling can be entered in the Min and Max fields. The number of frames
- per second actually being displayed by IDL is shown. There is a status window that
- shows whether the EPICS PVs are connected and the time the last was array received,
- updated once per second.
-
- 
- epics_ad_display can use the simple IDL routine tv to
- display the images. This is the fastest mode, and results in a non-scalable unadorned
- window.
tv routine.
- 
- epics_ad_display can also use the routine
- image_display.pro to display the images. This routine displays row and column
- profiles as the cursor is moved. It allows changing the color lookup tables, and
- zooming in (right mouse click) and out (left mouse click). The following is an example
- of image_display displaying an image from the simulation detector.
- 
- Stephen Mudie at the Australian Synchrotron has written a very nice IDL client to - display the EPICS images from the Flea Firewire cameras. This client is being converted - to display the data from this areaDetector plugin. -