From d5903b369ca365e42cbb76bf5d56d5893c7e6112 Mon Sep 17 00:00:00 2001 From: rivers Date: Wed, 19 Aug 2009 13:42:06 +0000 Subject: [PATCH] New file git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@9335 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b --- documentation/pvcamDoc.html | 193 +++++++++++++++++++ documentation/simDetector_ImageJ_display.png | Bin 0 -> 32405 bytes 2 files changed, 193 insertions(+) create mode 100644 documentation/pvcamDoc.html create mode 100755 documentation/simDetector_ImageJ_display.png diff --git a/documentation/pvcamDoc.html b/documentation/pvcamDoc.html new file mode 100644 index 0000000..f3e3c3e --- /dev/null +++ b/documentation/pvcamDoc.html @@ -0,0 +1,193 @@ + + + + areaDetector PVCAM driver + + + +
+

+ areaDetector PVCAM driver

+

+ August 18, 2009

+

+ Brian Tieman, John Hammonds, Mark Rivers

+

+ Argonne National Laboratory and University of Chicago

+
+

+ Table of Contents

+ +

+ Introduction

+

+ This is a driver for the Roper Scientific + detectors, which includes those from + Princeton Instruments and Photometrics.

+

+ The driver is based upon the PVCAM library from Roper, and only runs on Microsoft + Windows computers. This driver is complementary to the areaDetector + Roper driver. That driver uses the Microsoft COM interface to control the + Roper WinView program. This driver works at a lower level, communicating instead + with the PVCAM library layer. PVCAM supports all Photometrics cameras, and many, + but not all, Princeton Instruments cameras. +

+

+ ADD ADDTIONAL INTRODUCTORY TEXT HERE.

+

+ This driver inherits from ADDriver. + It implements many of the parameters in NDStdDriverParam_t (see + asynNDArryDriver.h) and in ADStdDriverParam_t (see + ADArrayDriver.h). It also implements a number of parameters that are specific + to the Roper detectors. The pvCam + class documentation describes this class in detail.

+

+ Implementation of standard driver parameters

+

+ The following table describes how the PVCAM driver implements some of the standard + driver parameters. +

+

+ DOCUMENT IMPLEMENTATION OF STANDARD DRIVER PARAMETERS IN THIS TABLE

+ + + + + + + + + + + + + + + + +
+ Implementation of Parameters in asynNDArrayDriver.h and ADDriver.h, and EPICS Record + Definitions in ADBase.template and NDFile.template
+ Enum name + EPICS record name + Description
+ ADNumImages + $(P$(R)NumImages + Controls the number of images to acquire when ADImageMode is ADImageMultiple.
+

+ PVCAM specific parameters

+

+ The PVCAM driver implements the following parameters in addition to those in asynNDArrayDriver.h + and ADDriver.h. Note that to reduce the width of this table the enum names have + been split into 2 lines, but these are just a single name, for example PVCamInitDetector. +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+ Parameter Definitions in pvcamSrc.h and EPICS Record Definitions in pvCam.template
+ Enum name + asyn interface + Access + Description + drvUser string + EPICS record name + EPICS record type
+ PVCam
+ InitDetector
+ asynInt32 + r/w + Initializes the detector + PVCAM_INITIALIZE_DETECTOR + $(P)$(R)Initialize
+ $(P)$(R)Initialize_RBV
+ longout
+ longin
+

+ Unsupported standard driver parameters

+

+ The PVCAM driver does not support the following standard driver parameters because + they are not supported in the PVCAM library:

+ +

+ Configuration

+

+ The PVCAM driver is created with the pvCamConfig command, either from C/C++ or from + the EPICS IOC shell.

+
int pvCamConfig(const char *portName, int maxSizeX, int maxSizeY, int dataType, 
+                int maxBuffers, 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 pvCamConfig function in the + pvCam.cpp documentation and in the documentation for the constructor for the + pvCam class. +

+

+ There an example IOC boot directory and startup script (iocBoot/iocPVCam/st.cmd) + provided with areaDetector. +

+

+ MEDM screens

+

+ The following shows the MEDM screens that are used to control the PVCAM detector. + Note that the general purpose screen ADBase.adl can be used, but it exposes many + controls that are not applicable to the PVCAM driver, and lacks some fields that + are important for the PVCAM driver.

+

+ pvCam.adl is the main screen used to control the PVCAM driver. +

+
+

+ pvCam.adl

+ pvCam.png
+

+ Performance measurements

+

+ The following measurements were done to demonstrate the performance that can be + obtained with the areaDetector PVCAM driver.

+

+ PUT A TABLE OF PERFORMANCE MEASUREMENTS HERE

+

+ Restrictions

+

+ The following are some current restrictions of the PVCAM driver:

+ + + diff --git a/documentation/simDetector_ImageJ_display.png b/documentation/simDetector_ImageJ_display.png new file mode 100755 index 0000000000000000000000000000000000000000..c6936d0ba7101d2967041a4c06b361cc3b4c4f73 GIT binary patch literal 32405 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 L2aR$K>_h(x42^M? literal 0 HcmV?d00001