NDPluginStdArrays

author:Mark Rivers, University of Chicago

Overview

This plugin is the tool for converting the NDArray data produced by asynNDArrayDriver drivers into a form that can be accessed by EPICS.

NDPluginStdArrays inherits from NDPluginDriver. NDPluginStdArrays converts the NDArray data from a callback into the 1-dimensional arrays supported by the standard asyn array interfaces, i.e. asyn[Int8, Int16, Int32, Float32, Float64]Array. These interfaces are supported by the EPICS waveform record using standard asyn device support. Because 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 class documentation describes this class in detail.

NDPluginStdArrays defines the following parameters. It also implements all of the standard plugin parameters from NDPluginDriver. The EPICS database NDStdArrays.template provides access to these parameters, listed in the following table.

Parameter Definitions in NDPluginStdArrays.h and EPICS Record Definitions in NDStdArrays.template
Parameter index variable asyn interface Access Description drvInfo string EPICS record name EPICS record type
NDPluginStdArraysData asyn[Int8, Int16, Int32, Float32, Float64]Array r/o Array data as a 1-D array, possibly converted in data type from that in the NDArray object to the specific asyn interface. STD_ARRAY_DATA $(P)$(R)ArrayData waveform

If the array data contains more than 16,000 bytes then in order for EPICS clients to receive this data they must be built with EPICS R3.14 (not R3.13), and the environment variable EPICS_CA_MAX_ARRAY_BYTES on both the EPICS IOC computer and EPICS client computer must be set to a value at least as large as the array size in bytes.

Configuration

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)

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.

Screen shots

The following is the MEDM screen that provides access to the parameters in NDPluginDriver.h and NDPluginStdArrays.h through records in NDPluginBase.template and NDStdArrays.template. This is the MEDM screen that is normally used to control the display of images via EPICS channel access.

../_images/NDStdArrays.png