From 62bfc576c8b6e25a8c2bd339cdfa490ee8bfa7ee Mon Sep 17 00:00:00 2001 From: rivers Date: Thu, 18 Sep 2008 20:34:52 +0000 Subject: [PATCH] More formatting fixes git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@7638 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b --- documentation/areaDetectorReleaseNotes.html | 114 +++--- documentation/simDetectorDoc.html | 430 +++++++++++--------- 2 files changed, 296 insertions(+), 248 deletions(-) diff --git a/documentation/areaDetectorReleaseNotes.html b/documentation/areaDetectorReleaseNotes.html index 3f473f7..e63b61f 100755 --- a/documentation/areaDetectorReleaseNotes.html +++ b/documentation/areaDetectorReleaseNotes.html @@ -1,58 +1,56 @@ - - - -areaDetectorReleaseNotes.html - - - -

areaDetector Release Notes

-

Release 1-2 (xxx-June-2008)

- - - -

Release 1-1 (10-May-2008)

- - -

Release 1-0 (11-Apr-2008)

- - -
- Suggestions and Comments to:
- Mark Rivers : - (rivers@cars.uchicago.edu)
-
- - + + + areaDetectorReleaseNotes.html + + +

+ areaDetector Release Notes

+

+ Release 1-2 (19-Sept-2008)

+ +

+ Release 1-1 (10-May-2008)

+ +

+ Release 1-0 (11-Apr-2008)

+ +
+ Suggestions and Comments to: +
+ Mark Rivers : (rivers@cars.uchicago.edu) +
+
+ + diff --git a/documentation/simDetectorDoc.html b/documentation/simDetectorDoc.html index f31d1b0..636b9c4 100755 --- a/documentation/simDetectorDoc.html +++ b/documentation/simDetectorDoc.html @@ -1,39 +1,41 @@ - - -areaDetector Simulation driver - - - -
-

areaDetector Simulation driver

- -

September 5, 2008

-

Mark Rivers

-

University of Chicago

-
-

 

- -

Table of Contents

- - -

Introduction

- -

-simDetector is a driver for a simulated area detector. It inherits from ADDriver. The simulation detector implements -nearly all of the parameters defined in ADStdDriverParams.h, with the exception of the file saving parameters, -which it does not -implement. It also implements a few parameters that are specific -to the simulation detector. The simulation detector is useful as a model for writing real detector drivers. It is -also very useful for testing plugins and channel access clients. -This is part of the definition of the simDetector class: -

-
+
+
+  areaDetector Simulation driver
+
+
+  
+

+ areaDetector Simulation driver

+

+ September 5, 2008

+

+ Mark Rivers

+

+ University of Chicago

+
+

+  

+

+ Table of Contents

+ +

+ Introduction

+

+ simDetector is a driver for a simulated area detector. It inherits from ADDriver. + The simulation detector implements nearly all of the parameters defined in ADStdDriverParams.h, + with the exception of the file saving parameters, which it does not implement. It + also implements a few parameters that are specific to the simulation detector. The + simulation detector is useful as a model for writing real detector drivers. It is + also very useful for testing plugins and channel access clients. This is part of + the definition of the simDetector class: +

+
 class simDetector : public ADDriver {
 public:
     simDetector(const char *portName, int maxSizeX, int maxSizeY, NDDataType_t dataType,
@@ -45,26 +47,33 @@ public:
     virtual asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo, 
                                      const char **pptypeName, size_t *psize);
     void report(FILE *fp, int details);
-
-

The portName, maxBuffers, and maxMemory arguments are passed to the ADDriver base class constructor. The maxSizeX, maxSizeY, and -dataType arguments are specific to the simulation driver, controlling the maximum image size and initial data type of the -computed images. The writeInt32 and writeFloat64 methods override those in the base class. The driver takes action -when new parameters are passed via those interfaces. For example, the ADAcquire parameter (on the asynInt32 interface) is -used to turn acquisition (i.e. computing new images) on and off. -

-

-The simulation driver initially sets the image[i, j] = i*gainX + j*gainY * gain * exposureTime * 1000. Thus the -image is a linear ramp in the X and Y directions, with the gains in each direction being detector-specific parameters. -Each subsquent acquisition increments each pixel value by gain*exposureTime*1000. Thus if gain=1 and exposureTime=.001 -second then the pixels are incremented by 1. If the array is an unsigned 8 or 16 bit integer then the pixels -will overflow and wrap around to 0 after some period of time. This gives the appearance of bands that appear to move -with time. The slope of the bands and their periodicity can be adjusted by changing the gains and exposure times. -

-

-The driver creates a thread that waits for a signal to start acquisition. When acquisition is started that thread -computes new images and then calls back any registered plugins as follows: -

-
+
+

+ The portName, maxBuffers, and maxMemory arguments are passed to the ADDriver base + class constructor. The maxSizeX, maxSizeY, and dataType arguments are specific to + the simulation driver, controlling the maximum image size and initial data type + of the computed images. The writeInt32 and writeFloat64 methods override those in + the base class. The driver takes action when new parameters are passed via those + interfaces. For example, the ADAcquire parameter (on the asynInt32 interface) is + used to turn acquisition (i.e. computing new images) on and off. +

+

+ The simulation driver initially sets the image[i, j] = i*gainX + j*gainY * gain + * exposureTime * 1000. Thus the image is a linear ramp in the X and Y directions, + with the gains in each direction being detector-specific parameters. Each subsquent + acquisition increments each pixel value by gain*exposureTime*1000. Thus if gain=1 + and exposureTime=.001 second then the pixels are incremented by 1. If the array + is an unsigned 8 or 16 bit integer then the pixels will overflow and wrap around + to 0 after some period of time. This gives the appearance of bands that appear to + move with time. The slope of the bands and their periodicity can be adjusted by + changing the gains and exposure times. +

+

+ The driver creates a thread that waits for a signal to start acquisition. When acquisition + is started that thread computes new images and then calls back any registered plugins + as follows: +

+
         /* Put the frame number and time stamp into the buffer */
         pImage->uniqueId = imageCounter;
         pImage->timeStamp = startTime.secPastEpoch + startTime.nsec / 1.e9;
@@ -77,137 +86,178 @@ computes new images and then calls back any registered plugins as follows:
              "%s:%s: calling imageData callback\n", driverName, functionName);
         doCallbacksGenericPointer(pImage, NDArrayData, addr);
         epicsMutexLock(this->mutexId);
-
-

Simulation driver specific parameters

-

-The simulation driver-specific parameters are the following: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parameter Definitions in simDetector.cpp and EPICS Record Definitions in simDetector.template
Enum nameasyn interfaceAccessDescriptiondrvUser stringEPICS record nameEPICS record type
SimGainXasynFloat64r/wGain in the X directionSIM_GAINX$(P)$(R)GainX
$(P)$(R)GainX_RBV
ao
ai
SimGainYasynFloat64r/wGain in the Y directionSIM_GAINY$(P)$(R)GainY
$(P)$(R)GainY_RBV
ao
ai
SimResetImageasynInt32r/wReset image back to initial conditions when 1.RESET_IMAGE$(P)$(R)Reset
$(P)$(R)Reset_RBV
longout
longin
- - -

Unsupported standard driver parameters

- - - - -

Screenshots

-

-The following is the MEDM screen ADBase.adl connected to a simulation detector. -

-

-ADBase_sim.png -

-

-The following is the MEDM screen that provides access to the specific parameters for the simulation detector. -

-

-simDetector.png -

-

-The following is an IDL epics_ad_display screen using image_display (discussed below) illustrating the simulation detector images. - -

-

-simDetector_image_display.png -

-

Configuring

- -

-This driver is configured via the simDetectorConfig() function. If this is -to be used in an IOC, it must be called before iocInit(). It has the -following syntax: -

- -
-
int simDetectorConfig(const char *portName, int maxSizeX, int maxSizeY, int dataType, - int maxBuffers, size_t maxMemory)
-
-
-
portName
-
ASYN port name for the driver instance
-
maxSizeX
-
Maximum number of pixels in the X direction for the simulated detector
-
maxSizeY
-
Maximum number of pixels in the Y direction for the simulated detector
-
dataType
-
Initial data type of the detector data. These are the enum values for NDDataType_t, i.e. -
    -
  • 0=NDInt8
  • -
  • 1=NDUInt8
  • -
  • 2=NDInt16
  • -
  • 3=NDUInt16
  • -
  • 4=NDInt32
  • -
  • 5=NDUInt32
  • -
  • 6=NDFloat32
  • -
  • 7=NDFloat64
  • -
-
maxBuffers
-
Maxiumum number of NDArray objects (image buffers) this driver is allowed to allocate. - The driver itself requires 2 buffers, and each queue element in a plugin can require one buffer. - So, for example, if 3 plugins are connected - to this driver, and each has a queue size of 10, then maxBuffers should be at least 32.
-
maxMemory
-
Maxiumum number of bytes of memory for all NDArray objects (image buffers) allocated by this driver. - If maxSizeX=maxSizeY=1024, and maxBuffers=32, then maxMemory should be at least 33554432 (~33MB).
-
-
-
- -

-If being used in an IOC, and an EPICS PV interface with the driver is desired, -the ADBase.template and simDetector.template databases should also -be loaded for the driver instance. -

-

-The areaDetector software comes with an example IOC for the simulation driver, iocBoot/iocSimDetector. -

- - +
+

+ Simulation driver specific parameters

+

+ The simulation driver-specific parameters are the following: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Parameter Definitions in simDetector.cpp and EPICS Record Definitions in simDetector.template
+ Enum name + asyn interface + Access + Description + drvUser string + EPICS record name + EPICS record type
+ SimGainX + asynFloat64 + r/w + Gain in the X direction + SIM_GAINX + $(P)$(R)GainX
+ $(P)$(R)GainX_RBV
+ ao
+ ai
+ SimGainY + asynFloat64 + r/w + Gain in the Y direction + SIM_GAINY + $(P)$(R)GainY
+ $(P)$(R)GainY_RBV
+ ao
+ ai
+ SimResetImage + asynInt32 + r/w + Reset image back to initial conditions when 1. + RESET_IMAGE + $(P)$(R)Reset
+ $(P)$(R)Reset_RBV
+ longout
+ longin
+

+ Unsupported standard driver parameters

+ +

+ Screenshots

+

+ The following is the MEDM screen ADBase.adl connected to a simulation detector. +

+

+ ADBase_sim.png +

+

+ The following is the MEDM screen that provides access to the specific parameters + for the simulation detector. +

+

+ simDetector.png +

+

+ The following is an IDL epics_ad_display screen using image_display (discussed below) + illustrating the simulation detector images. +

+

+ simDetector_image_display.png +

+

+ Configuring

+

+ This driver is configured via the simDetectorConfig() function. If this + is to be used in an IOC, it must be called before iocInit(). It has the + following syntax: +

+
+
int simDetectorConfig(const char *portName, int maxSizeX, int maxSizeY, int + dataType, int maxBuffers, size_t maxMemory)
+
+
+
portName
+
+ ASYN port name for the driver instance
+
maxSizeX
+
+ Maximum number of pixels in the X direction for the simulated detector
+
maxSizeY
+
+ Maximum number of pixels in the Y direction for the simulated detector
+
dataType
+
+ Initial data type of the detector data. These are the enum values for NDDataType_t, + i.e. +
    +
  • 0=NDInt8
  • +
  • 1=NDUInt8
  • +
  • 2=NDInt16
  • +
  • 3=NDUInt16
  • +
  • 4=NDInt32
  • +
  • 5=NDUInt32
  • +
  • 6=NDFloat32
  • +
  • 7=NDFloat64
  • +
+
+
maxBuffers
+
+ Maxiumum number of NDArray objects (image buffers) this driver is allowed to allocate. + The driver itself requires 2 buffers, and each queue element in a plugin can require + one buffer. So, for example, if 3 plugins are connected to this driver, and each + has a queue size of 10, then maxBuffers should be at least 32.
+
maxMemory
+
+ Maxiumum number of bytes of memory for all NDArray objects (image buffers) allocated + by this driver. If maxSizeX=maxSizeY=1024, and maxBuffers=32, then maxMemory should + be at least 33554432 (~33MB).
+
+
+
+

+ If being used in an IOC, and an EPICS PV interface with the driver is desired, the + ADBase.template and simDetector.template databases should also + be loaded for the driver instance. +

+

+ The areaDetector software comes with an example IOC for the simulation driver, + iocBoot/iocSimDetector. +

+ +