diff --git a/documentation/FirewireWinDoc.html b/documentation/FirewireWinDoc.html index 6231339..7e83a42 100755 --- a/documentation/FirewireWinDoc.html +++ b/documentation/FirewireWinDoc.html @@ -1,1160 +1,1162 @@ - -
-- This is a driver for Firewire (IEEE 1394) cameras that follow the - IIDC/DCAM specification. This industry standard allows a single driver to - control cameras from any manufacturer, using any of the supported video formats - and features. It inherits from ADDriver and implements many of the parameters in - asynNDArrayDriver.h and ADDriver.h. It also implements a number of parameters that - are specific to the Firewire cameras.
-- This driver runs only on Windows. It uses the - Carnegie Mellon 1394 camera driver and library. There is also an areaDetector - Firewire driver for Linux available from the - Diamond Light Source. -
-- This driver inherits from ADDriver. The - firewireWinDCAM class documentation describes this class in detail.
-- The IIDC/DCAM specification defines standard ways that manufacturers must implement - features like shutter time, white balance, frame sizes, frame rates, etc. There - is a standard way to determine whether or not a particular camera supports a particular - feature. If it does then there is a standard way of querying the allowed range of - values for that feature. This makes it quite easy to write a driver that can support - cameras with any capabilities from any manufacturer.
-- The DCAM specification defines standard video frame sizes, color modes and frames - rates. The following tables lists these standard formats and mode. Video format - 7 is special. It allows defining an ROI on the camera to read out. The pixel resolution - with which the size and position of this ROI can be defined can be queried, and - is not necessarily a single pixel. In Format 7 the frame rate settings do not apply, - and the frame rate is determined by the size of the Fireware data packets.
-| - Standard IIDC/DCAM Video Formats and Video Modes | -|||
| - Format Number | -- Format Description | -- Mode Number | -- Mode Description | -
|---|---|---|---|
| - 0 | -- VGA | -||
| - 0 | -- 160x120 YUV444 | -||
| - 1 | -- 320x240 YUV422 | -||
| - 2 | -- 640x480 YUV411 | -||
| - 3 | -- 640X480 YUV422 | -||
| - 4 | -- 640x480 RGB | -||
| - 5 | -- 640x480 Mono8 | -||
| - 6 | -- 640x480 Mono16 | -||
| - 7 | -- Reserved | -||
| - 1 | -- Super-VGA1 | -||
| - 0 | -- 800x600 YUV422 | -||
| - 1 | -- 800x600 RGB | -||
| - 2 | -- 800x600 Mono8 | -||
| - 3 | -- 1024x768 YUV422 | -||
| - 4 | -- 1024x768 RGB | -||
| - 5 | -- 1024x768 Mono8 | -||
| - 6 | -- 800x600 Mono16 | -||
| - 7 | -- 1024x768 Mono16 | -||
| - 2 | -- Super-VGA2 | -||
| - 0 | -- 1280x960 YUV422 | -||
| - 1 | -- 1280x960 RGB | -||
| - 2 | -- 1280x960 Mono8 | -||
| - 3 | -- 1600x1200 YUV422 | -||
| - 4 | -- 1600x1200 RGB | -||
| - 5 | -- 1600x1200 Mono8 | -||
| - 6 | -- 1280x960 Mono16 | -||
| - 7 | -- 1600x1200 Mono16 | -||
| - 3-5 | -- Reserved | -||
| - 0-7 | -- Reserved | -||
| - 6 | -- Still image | -||
| - 0 | -- Exif | -||
| - 1-7 | -- Reserved | -||
| - 7 | -- Partial Image (user-defineable ROI) | -||
| - 0-7 | -- Vendor-defined | -||
- The following tables lists the standard frame rates for formats 0, 1 and 2. Note - that not all frame rates are supported by the IIDC standard for every format and - mode, and even when a frame rate is supported by the standard it may not be implemented - for a particular camera. In Format 7 the frame rate settings do not apply, and the - frame rate is determined by the size of the Fireware data packets. The areaDetector - driver currently sets the Format 7 packet size to the vendor recommended size, which - typically results in the maximum possible frame rate.
-| - Standard IIDC/DCAM Video Frame Rates | -|
| - Frame Rate Number | -- Frame Rate (Frames/second) | -
|---|---|
| - 0 | -- 1.875 | -
| - 1 | -- 3.75 | -
| - 2 | -- 7.5 | -
| - 3 | -- 15 | -
| - 4 | -- 30 | -
| - 5 | -- 60 | -
| - 6 | -- 120 | -
| - 7 | -- 240 | -
- The DCAM specification defines 22 standard features, which control things such as - the brightness, white balance, shutter time, etc.. For each feature the standard - defines control in both device units (12-bit integers) and absolute units (floating - point). For example shutter time may support absolute seconds, as well as device - units. A feature may or may not be supported on a particular camera. If it is supported - it may or may not permit control in absolute units. Each feature may support both - manual control and automatic control (e.g. automatic gain control). The following - tables lists these standard features.
-| - Standard IIDC/DCAM Features | -||
| - Feature Number | -- Feature Description | -- EPICS record string for firewireFeature.template | -
|---|---|---|
| - 0 | -- Brightness | -- BRIGHTNESS | -
| - 1 | -- Auto exposure | -- EXPOSURE | -
| - 2 | -- Sharpness | -- SHARPNESS | -
| - 3 | -- White balance (color tint) | -- WHITEB | -
| - 4 | -- Hue (color tint) | -- HUE | -
| - 5 | -- Saturation (color saturation) | -- SATURATION | -
| - 6 | -- Gamma (response curve) | -- GAMMA | -
| - 7 | -- Shutter (exposure time) | -- SHUTTER | -
| - 8 | -- Gain (amplification) | -- GAIN | -
| - 9 | -- Iris | -- IRIS | -
| - 10 | -- Focus | -- FOCUS | -
| - 11 | -- Temperature | -- TEMP | -
| - 12 | -- Trigger mode | -- TRIGGER | -
| - 13 | -- Trigger delay | -- TRIGDLY | -
| - 14 | -- White shading | -- WHITES | -
| - 15 | -- Frame rate | -- FRAMERATE | -
| - 16 | -- Zoom | -- ZOOM | -
| - 17 | -- Pan | -- PAN | -
| - 18 | -- Tilt | -- TILT | -
| - 19 | -- Optical filter | -- FILTER | -
| - 20 | -- Capture size | -- CAPTSIZE | -
| - 21 | -- Capture quality | -- QUALITY | -
- The firewireWinDCAM driver implements the following parameters in addition to those
- in asynNDArrayDriver.h and ADDriver.hh. 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 mar345ScanSize.
-
| - Parameter Definitions in firewireWinDCAM.cpp and EPICS Record Definitions | -||||||
| - Enum name | -- asyn interface | -- Access | -- Description | -- drvUser string | -- EPICS record name | -- EPICS record type | -
|---|---|---|---|---|---|---|
| - Video format parameters. In firewireDCAM.template and firewireVideoModes.template. | -||||||
|
- FDC_ - format |
- - asynInt32 | -- r/w | -- The video format. The allowed choices are 0="VGA", 1="Super VGA 1", 2="Super VGA - 2", 6="Still image", 7="User-defined". The FDC_has_format and FDC_valid_format parameters - described below indicate whether a particular format is actually supported by the - camera. | -- FDC_FORMAT | -
- $(P)$(R)FORMAT - $(P)$(R)FORMAT_RBV |
-
- mbbo
- - mbbi - |
-
|
- FDC_ - has_format |
- - asynInt32 | -- r/o | -- A flag indicating whether a particular format (0-7) is supported by the camera. | -- FDC_HAS_FORMAT | -- $(P)$(R)HAS_FORMAT_$(N) (N=0-7) | -- bi - | -
|
- FDC_ - valid_format |
- - asynOctet | -- r/o | -- A string describing each of the formats (0-7) supported by the camera. The string - is "N.A." if the format is not supported. | -- FDC_VALID_FORMAT | -- $(P)$(R)VALID_FORMAT_$(N) (N=0-7) | -- stringin - | -
|
- FDC_ - current_format |
- - asynOctet | -- r/o | -- A string describing the currently selected video format. | -- FDC_CURRENT_FORMAT | -- $(P)$(R)CURRENT_FORMAT | -- stringin - | -
| - Video mode parameters. In firewireDCAM.template and firewireVideoModes.template. | -||||||
|
- FDC_ - mode |
- - asynInt32 | -- r/w | -- The video mode. The allowed choices are 0-7. The FDC_has_mode and FDC_valid_mode - parameters described below indicate whether a particular mode is actually supported - by the camera in the currently selected video format. | -- FDC_MODE | -
- $(P)$(R)MODE - $(P)$(R)MODE_RBV |
-
- mbbo
- - mbbi - |
-
|
- FDC_ - has_mode |
- - asynInt32 | -- r/o | -- A flag indicating whether a particular mode (0-7) is supported by the camera in - the currently selected format. | -- FDC_HAS_MODE | -- $(P)$(R)HAS_MODE_$(N) (N=0-7) | -- bi - | -
|
- FDC_ - valid_mode |
- - asynOctet | -- r/o | -- A string describing each of the modes (0-7) supported by the camera in the currently - selected video format. The string is "N.A." if the mode is not supported in this - format. | -- FDC_VALID_MODE | -- $(P)$(R)VALID_MODE_$(N) (N=0-7) | -- stringin - | -
|
- FDC_ - current_mode |
- - asynOctet | -- r/o | -- A string describing the currently selected video mode. | -- FDC_CURRENT_MODE | -- $(P)$(R)CURRENT_MODE | -- stringin - | -
| - Video frame rate parameters. These parameters do not apply when the video format=7. - In firewireDCAM.template and firewireVideoModes.template. | -||||||
|
- FDC_ - framerate |
- - asynInt32 | -- r/w | -- The frame rate in frames/second. The allowed choices are 0="1.875", 1="3.75", 2="7.5", - 3="15", 4="30", 5="60", 6="120", 7="240". FDC_has_framerate and FDC_valid_framerate - parameters described below indicate whether a particular frame rate is actually - supported by the camera in the currently selected video format and mode. | -- FDC_FRAMERATE | -
- $(P)$(R)FR - $(P)$(R)FR_RBV |
-
- mbbo
- - mbbi - |
-
|
- FDC_ - has_framerate |
- - asynInt32 | -- r/o | -- A flag indicating whether a particular frame rate (0-7) is supported by the camera - in the currently selected video format and mode. | -- FDC_HAS_FRAMERATE | -- $(P)$(R)HAS_RATE_$(N) (N=0-7) | -- bi - | -
|
- FDC_ - valid_framerate |
- - asynOctet | -- r/o | -- A string describing each of the frame rates (0-7) supported by the camera in the - currently selected video format and mode. The string is "N.A." if the frame rate - is not supported in this format and mode. | -- FDC_VALID_FRAMERATE | -- $(P)$(R)VALID_RATE_$(N) (N=0-7) | -- stringin - | -
|
- FDC_ - current_framerate |
- - asynOctet | -- r/o | -- A string describing the currently selected video frame rate. | -- FDC_CURRENT_FRAMERATE | -- $(P)$(R)CURRENT_RATE | -- stringin - | -
| - Video color code parameters. These parameters only apply when the video format=7. - In firewireDCAM.template and firewireColorCodes.template. | -||||||
|
- FDC_ - colorcode |
- - asynInt32 | -- r/w | -- The color code. The allowed choices are 0-10. FDC_has_colorcode and FDC_valid_colorcode - parameters described below indicate whether a particular color code is actually - supported by the camera in the currently selected video format (7) and mode. | -- FDC_COLORCODE | -
- $(P)$(R)COLORCODE - $(P)$(R)COLORCODE_RBV |
-
- mbbo
- - mbbi - |
-
|
- FDC_ - has_colorcode |
- - asynInt32 | -- r/o | -- A flag indicating whether a particular color code (0-10) is supported by the camera - in the currently selected video format (7) and mode. | -- FDC_HAS_COLORCODE | -- $(P)$(R)HAS_COLORCODE_$(N) (N=0-10) | -- bi - | -
|
- FDC_ - valid_colorcode |
- - asynOctet | -- r/o | -- A string describing each of the color codes (0-10) supported by the camera in the - currently selected video format (7) and mode. The string is "N.A." if the color - code is not supported in this format and mode. | -- FDC_VALID_COLORCODE | -- $(P)$(R)VALID_COLORCODE_$(N) (N=0-10) | -- stringin - | -
|
- FDC_ - current_colorcode |
- - asynOctet | -- r/o | -- A string describing the currently selected color code. | -- FDC_CURRENT_COLORCODE | -- $(P)$(R)CURRENT_COLORCODE | -- stringin - | -
| - Video feature parameters. These parameters apply to each of the 22 DCAM features - listed above. In firewireFeature.template. | -||||||
|
- FDC_ - feat_val |
- - asynInt32 | -- r/w | -- The feature value in device units. | -- FDC_FEAT_VAL | -
- $(P)$(R)$(FEATURE) - $(P)$(R)$(FEATURE)_RBV |
-
- ao
- - ai - |
-
|
- FDC_ - feat_val_abs |
- - asynFloat64 | -- r/w | -- The feature value in absolute units. | -- FDC_FEAT_VAL_ABS | -
- $(P)$(R)$(FEATURE)_ABS - $(P)$(R)$(FEATURE)_ABS_RBV |
-
- ao
- - ai - |
-
|
- FDC_ - feat_available |
- - asynInt32 | -- r/o | -- A flag indicating if the feature is available. | -- FDC_FEAT_AVL | -- $(P)$(R)$(FEATURE)_AVL | -- bi - | -
|
- FDC_ - feat_absolute |
- - asynInt32 | -- r/o | -- A flag indicating if absolute control of the feature is available. | -- FDC_FEAT_ABSOLUTE | -- $(P)$(R)$(FEATURE)_ABS_AVL | -- bi - | -
|
- FDC_ - feat_mode |
- - asynInt32 | -- r/o | -- Selects manual (0) or automatic (1) control of the feature. | -- FDC_FEAT_MODE | -
- $(P)$(R)$(FEATURE)_CTRL - $(P)$(R)$(FEATURE)_CTRL_RBV |
-
- bo
- - bi - |
-
|
- FDC_ - feat_val_min |
- - asynInt32 | -- r/o | -- The minimum allowed value of the feature in device units. The database copies this - value to the LOPR and DRVL fields of the $(P)$(R)$(FEATURE) record. | -- FDC_FEAT_VAL_MIN | -- $(P)$(R)$(FEATURE)_MIN | -- ai - | -
|
- FDC_ - feat_val_max |
- - asynInt32 | -- r/o | -- The maximum allowed value of the feature in device units. The database copies this - value to the HOPR and DRVH fields of the $(P)$(R)$(FEATURE) record. | -- FDC_FEAT_VAL_MAX | -- $(P)$(R)$(FEATURE)_MAX | -- ai - | -
|
- FDC_ - feat_val_abs_min |
- - asynInt32 | -- r/o | -- The minimum allowed value of the feature in absolute units. The database copies - this value to the LOPR and DRVL fields of the $(P)$(R)$(FEATURE)_ABS record. | -- FDC_FEAT_VAL_ABS_MIN | -- $(P)$(R)$(FEATURE)_ABS_MIN | -- ai - | -
|
- FDC_ - feat_val_abs_max |
- - asynFloat64 | -- r/o | -- The maximum allowed value of the feature in absolute units. The database copies - this value to the HOPR and DRVH fields of the $(P)$(R)$(FEATURE)_ABS record. | -- FDC_FEAT_VAL_ABS_MAX | -- $(P)$(R)$(FEATURE)_ABS_MAX | -- ai - | -
- The firewireWinDCAM driver is created with the WinFDC_Config command, either from - C/C++ or from the EPICS IOC shell.
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + + ++ This is a driver for Firewire (IEEE 1394) cameras that follow the + IIDC/DCAM specification. This industry standard allows a single driver to + control cameras from any manufacturer, using any of the supported video formats + and features.
++ This driver runs only on Windows. It uses the + Carnegie Mellon 1394 camera driver and library. There is also an areaDetector + Firewire driver for Linux available from the + Diamond Light Source. +
++ 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 Firewire cameras. The + firewireWinDCAM class documentation describes this class in detail.
++ The IIDC/DCAM specification defines standard ways that manufacturers must implement + features like shutter time, white balance, frame sizes, frame rates, etc. There + is a standard way to determine whether or not a particular camera supports a particular + feature. If it does then there is a standard way of querying the allowed range of + values for that feature. This makes it quite easy to write a driver that can support + cameras with any capabilities from any manufacturer.
++ The DCAM specification defines standard video frame sizes, color modes and frames + rates. The following tables lists these standard formats and mode. Video format + 7 is special. It allows defining an ROI on the camera to read out. The pixel resolution + with which the size and position of this ROI can be defined can be queried, and + is not necessarily a single pixel. In Format 7 the frame rate settings do not apply, + and the frame rate is determined by the size of the Fireware data packets.
+| + Standard IIDC/DCAM Video Formats and Video Modes | +|||
| + Format Number | ++ Format Description | ++ Mode Number | ++ Mode Description | +
|---|---|---|---|
| + 0 | ++ VGA | +||
| + 0 | ++ 160x120 YUV444 | +||
| + 1 | ++ 320x240 YUV422 | +||
| + 2 | ++ 640x480 YUV411 | +||
| + 3 | ++ 640X480 YUV422 | +||
| + 4 | ++ 640x480 RGB | +||
| + 5 | ++ 640x480 Mono8 | +||
| + 6 | ++ 640x480 Mono16 | +||
| + 7 | ++ Reserved | +||
| + 1 | ++ Super-VGA1 | +||
| + 0 | ++ 800x600 YUV422 | +||
| + 1 | ++ 800x600 RGB | +||
| + 2 | ++ 800x600 Mono8 | +||
| + 3 | ++ 1024x768 YUV422 | +||
| + 4 | ++ 1024x768 RGB | +||
| + 5 | ++ 1024x768 Mono8 | +||
| + 6 | ++ 800x600 Mono16 | +||
| + 7 | ++ 1024x768 Mono16 | +||
| + 2 | ++ Super-VGA2 | +||
| + 0 | ++ 1280x960 YUV422 | +||
| + 1 | ++ 1280x960 RGB | +||
| + 2 | ++ 1280x960 Mono8 | +||
| + 3 | ++ 1600x1200 YUV422 | +||
| + 4 | ++ 1600x1200 RGB | +||
| + 5 | ++ 1600x1200 Mono8 | +||
| + 6 | ++ 1280x960 Mono16 | +||
| + 7 | ++ 1600x1200 Mono16 | +||
| + 3-5 | ++ Reserved | +||
| + 0-7 | ++ Reserved | +||
| + 6 | ++ Still image | +||
| + 0 | ++ Exif | +||
| + 1-7 | ++ Reserved | +||
| + 7 | ++ Partial Image (user-defineable ROI) | +||
| + 0-7 | ++ Vendor-defined | +||
+ The following tables lists the standard frame rates for formats 0, 1 and 2. Note + that not all frame rates are supported by the IIDC standard for every format and + mode, and even when a frame rate is supported by the standard it may not be implemented + for a particular camera. In Format 7 the frame rate settings do not apply, and the + frame rate is determined by the size of the Fireware data packets. The areaDetector + driver currently sets the Format 7 packet size to the vendor recommended size, which + typically results in the maximum possible frame rate.
+| + Standard IIDC/DCAM Video Frame Rates | +|
| + Frame Rate Number | ++ Frame Rate (Frames/second) | +
|---|---|
| + 0 | ++ 1.875 | +
| + 1 | ++ 3.75 | +
| + 2 | ++ 7.5 | +
| + 3 | ++ 15 | +
| + 4 | ++ 30 | +
| + 5 | ++ 60 | +
| + 6 | ++ 120 | +
| + 7 | ++ 240 | +
+ The DCAM specification defines 22 standard features, which control things such as + the brightness, white balance, shutter time, etc.. For each feature the standard + defines control in both device units (12-bit integers) and absolute units (floating + point). For example shutter time may support absolute seconds, as well as device + units. A feature may or may not be supported on a particular camera. If it is supported + it may or may not permit control in absolute units. Each feature may support both + manual control and automatic control (e.g. automatic gain control). The following + tables lists these standard features.
+| + Standard IIDC/DCAM Features | +||
| + Feature Number | ++ Feature Description | ++ EPICS record string for firewireFeature.template | +
|---|---|---|
| + 0 | ++ Brightness | ++ BRIGHTNESS | +
| + 1 | ++ Auto exposure | ++ EXPOSURE | +
| + 2 | ++ Sharpness | ++ SHARPNESS | +
| + 3 | ++ White balance (color tint) | ++ WHITEB | +
| + 4 | ++ Hue (color tint) | ++ HUE | +
| + 5 | ++ Saturation (color saturation) | ++ SATURATION | +
| + 6 | ++ Gamma (response curve) | ++ GAMMA | +
| + 7 | ++ Shutter (exposure time) | ++ SHUTTER | +
| + 8 | ++ Gain (amplification) | ++ GAIN | +
| + 9 | ++ Iris | ++ IRIS | +
| + 10 | ++ Focus | ++ FOCUS | +
| + 11 | ++ Temperature | ++ TEMP | +
| + 12 | ++ Trigger mode | ++ TRIGGER | +
| + 13 | ++ Trigger delay | ++ TRIGDLY | +
| + 14 | ++ White shading | ++ WHITES | +
| + 15 | ++ Frame rate | ++ FRAMERATE | +
| + 16 | ++ Zoom | ++ ZOOM | +
| + 17 | ++ Pan | ++ PAN | +
| + 18 | ++ Tilt | ++ TILT | +
| + 19 | ++ Optical filter | ++ FILTER | +
| + 20 | ++ Capture size | ++ CAPTSIZE | +
| + 21 | ++ Capture quality | ++ QUALITY | +
+ The firewireWinDCAM driver implements the following parameters in addition to those
+ in asynNDArrayDriver.h and ADDriver.hh. 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 mar345ScanSize.
+
| + Parameter Definitions in firewireWinDCAM.cpp and EPICS Record Definitions | +||||||
| + Enum name | ++ asyn interface | ++ Access | ++ Description | ++ drvUser string | ++ EPICS record name | ++ EPICS record type | +
|---|---|---|---|---|---|---|
| + Video format parameters. In firewireDCAM.template and firewireVideoModes.template. | +||||||
|
+ FDC_ + format |
+ + asynInt32 | ++ r/w | ++ The video format. The allowed choices are 0="VGA", 1="Super VGA 1", 2="Super VGA + 2", 6="Still image", 7="User-defined". The FDC_has_format and FDC_valid_format parameters + described below indicate whether a particular format is actually supported by the + camera. | ++ FDC_FORMAT | +
+ $(P)$(R)FORMAT + $(P)$(R)FORMAT_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ FDC_ + has_format |
+ + asynInt32 | ++ r/o | ++ A flag indicating whether a particular format (0-7) is supported by the camera. | ++ FDC_HAS_FORMAT | ++ $(P)$(R)HAS_FORMAT_$(N) (N=0-7) | ++ bi + | +
|
+ FDC_ + valid_format |
+ + asynOctet | ++ r/o | ++ A string describing each of the formats (0-7) supported by the camera. The string + is "N.A." if the format is not supported. | ++ FDC_VALID_FORMAT | ++ $(P)$(R)VALID_FORMAT_$(N) (N=0-7) | ++ stringin + | +
|
+ FDC_ + current_format |
+ + asynOctet | ++ r/o | ++ A string describing the currently selected video format. | ++ FDC_CURRENT_FORMAT | ++ $(P)$(R)CURRENT_FORMAT | ++ stringin + | +
| + Video mode parameters. In firewireDCAM.template and firewireVideoModes.template. | +||||||
|
+ FDC_ + mode |
+ + asynInt32 | ++ r/w | ++ The video mode. The allowed choices are 0-7. The FDC_has_mode and FDC_valid_mode + parameters described below indicate whether a particular mode is actually supported + by the camera in the currently selected video format. | ++ FDC_MODE | +
+ $(P)$(R)MODE + $(P)$(R)MODE_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ FDC_ + has_mode |
+ + asynInt32 | ++ r/o | ++ A flag indicating whether a particular mode (0-7) is supported by the camera in + the currently selected format. | ++ FDC_HAS_MODE | ++ $(P)$(R)HAS_MODE_$(N) (N=0-7) | ++ bi + | +
|
+ FDC_ + valid_mode |
+ + asynOctet | ++ r/o | ++ A string describing each of the modes (0-7) supported by the camera in the currently + selected video format. The string is "N.A." if the mode is not supported in this + format. | ++ FDC_VALID_MODE | ++ $(P)$(R)VALID_MODE_$(N) (N=0-7) | ++ stringin + | +
|
+ FDC_ + current_mode |
+ + asynOctet | ++ r/o | ++ A string describing the currently selected video mode. | ++ FDC_CURRENT_MODE | ++ $(P)$(R)CURRENT_MODE | ++ stringin + | +
| + Video frame rate parameters. These parameters do not apply when the video format=7. + In firewireDCAM.template and firewireVideoModes.template. | +||||||
|
+ FDC_ + framerate |
+ + asynInt32 | ++ r/w | ++ The frame rate in frames/second. The allowed choices are 0="1.875", 1="3.75", 2="7.5", + 3="15", 4="30", 5="60", 6="120", 7="240". FDC_has_framerate and FDC_valid_framerate + parameters described below indicate whether a particular frame rate is actually + supported by the camera in the currently selected video format and mode. | ++ FDC_FRAMERATE | +
+ $(P)$(R)FR + $(P)$(R)FR_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ FDC_ + has_framerate |
+ + asynInt32 | ++ r/o | ++ A flag indicating whether a particular frame rate (0-7) is supported by the camera + in the currently selected video format and mode. | ++ FDC_HAS_FRAMERATE | ++ $(P)$(R)HAS_RATE_$(N) (N=0-7) | ++ bi + | +
|
+ FDC_ + valid_framerate |
+ + asynOctet | ++ r/o | ++ A string describing each of the frame rates (0-7) supported by the camera in the + currently selected video format and mode. The string is "N.A." if the frame rate + is not supported in this format and mode. | ++ FDC_VALID_FRAMERATE | ++ $(P)$(R)VALID_RATE_$(N) (N=0-7) | ++ stringin + | +
|
+ FDC_ + current_framerate |
+ + asynOctet | ++ r/o | ++ A string describing the currently selected video frame rate. | ++ FDC_CURRENT_FRAMERATE | ++ $(P)$(R)CURRENT_RATE | ++ stringin + | +
| + Video color code parameters. These parameters only apply when the video format=7. + In firewireDCAM.template and firewireColorCodes.template. | +||||||
|
+ FDC_ + colorcode |
+ + asynInt32 | ++ r/w | ++ The color code. The allowed choices are 0-10. FDC_has_colorcode and FDC_valid_colorcode + parameters described below indicate whether a particular color code is actually + supported by the camera in the currently selected video format (7) and mode. | ++ FDC_COLORCODE | +
+ $(P)$(R)COLORCODE + $(P)$(R)COLORCODE_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ FDC_ + has_colorcode |
+ + asynInt32 | ++ r/o | ++ A flag indicating whether a particular color code (0-10) is supported by the camera + in the currently selected video format (7) and mode. | ++ FDC_HAS_COLORCODE | ++ $(P)$(R)HAS_COLORCODE_$(N) (N=0-10) | ++ bi + | +
|
+ FDC_ + valid_colorcode |
+ + asynOctet | ++ r/o | ++ A string describing each of the color codes (0-10) supported by the camera in the + currently selected video format (7) and mode. The string is "N.A." if the color + code is not supported in this format and mode. | ++ FDC_VALID_COLORCODE | ++ $(P)$(R)VALID_COLORCODE_$(N) (N=0-10) | ++ stringin + | +
|
+ FDC_ + current_colorcode |
+ + asynOctet | ++ r/o | ++ A string describing the currently selected color code. | ++ FDC_CURRENT_COLORCODE | ++ $(P)$(R)CURRENT_COLORCODE | ++ stringin + | +
| + Video feature parameters. These parameters apply to each of the 22 DCAM features + listed above. In firewireFeature.template. | +||||||
|
+ FDC_ + feat_val |
+ + asynInt32 | ++ r/w | ++ The feature value in device units. | ++ FDC_FEAT_VAL | +
+ $(P)$(R)$(FEATURE) + $(P)$(R)$(FEATURE)_RBV |
+
+ ao
+ + ai + |
+
|
+ FDC_ + feat_val_abs |
+ + asynFloat64 | ++ r/w | ++ The feature value in absolute units. | ++ FDC_FEAT_VAL_ABS | +
+ $(P)$(R)$(FEATURE)_ABS + $(P)$(R)$(FEATURE)_ABS_RBV |
+
+ ao
+ + ai + |
+
|
+ FDC_ + feat_available |
+ + asynInt32 | ++ r/o | ++ A flag indicating if the feature is available. | ++ FDC_FEAT_AVL | ++ $(P)$(R)$(FEATURE)_AVL | ++ bi + | +
|
+ FDC_ + feat_absolute |
+ + asynInt32 | ++ r/o | ++ A flag indicating if absolute control of the feature is available. | ++ FDC_FEAT_ABSOLUTE | ++ $(P)$(R)$(FEATURE)_ABS_AVL | ++ bi + | +
|
+ FDC_ + feat_mode |
+ + asynInt32 | ++ r/o | ++ Selects manual (0) or automatic (1) control of the feature. | ++ FDC_FEAT_MODE | +
+ $(P)$(R)$(FEATURE)_CTRL + $(P)$(R)$(FEATURE)_CTRL_RBV |
+
+ bo
+ + bi + |
+
|
+ FDC_ + feat_val_min |
+ + asynInt32 | ++ r/o | ++ The minimum allowed value of the feature in device units. The database copies this + value to the LOPR and DRVL fields of the $(P)$(R)$(FEATURE) record. | ++ FDC_FEAT_VAL_MIN | ++ $(P)$(R)$(FEATURE)_MIN | ++ ai + | +
|
+ FDC_ + feat_val_max |
+ + asynInt32 | ++ r/o | ++ The maximum allowed value of the feature in device units. The database copies this + value to the HOPR and DRVH fields of the $(P)$(R)$(FEATURE) record. | ++ FDC_FEAT_VAL_MAX | ++ $(P)$(R)$(FEATURE)_MAX | ++ ai + | +
|
+ FDC_ + feat_val_abs_min |
+ + asynInt32 | ++ r/o | ++ The minimum allowed value of the feature in absolute units. The database copies + this value to the LOPR and DRVL fields of the $(P)$(R)$(FEATURE)_ABS record. | ++ FDC_FEAT_VAL_ABS_MIN | ++ $(P)$(R)$(FEATURE)_ABS_MIN | ++ ai + | +
|
+ FDC_ + feat_val_abs_max |
+ + asynFloat64 | ++ r/o | ++ The maximum allowed value of the feature in absolute units. The database copies + this value to the HOPR and DRVH fields of the $(P)$(R)$(FEATURE)_ABS record. | ++ FDC_FEAT_VAL_ABS_MAX | ++ $(P)$(R)$(FEATURE)_ABS_MAX | ++ ai + | +
+ The firewireWinDCAM driver is created with the WinFDC_Config command, either from + C/C++ or from the EPICS IOC shell.
WinFDC_Config(const char *portName, const char* camid,
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 WinFDC_Config function in the - firewireWinDCAM.cpp documentation and in the documentation for the constructor - for the FirewireWinDCAM - class. -
-- There an example IOC boot directory and startup script (iocBoot/iocFirewire/st.cmd) - provided with areaDetector. -
-- The following show the MEDM screens that are used to control the Firewire detectors. - Note that the general purpose screen ADBase.adl must be used to control many features, - but it exposes some controls that are not applicable to Firewire cameras, and lacks - many fields that are important for such cameras. A new Firewire-specific top-level - control screen will be added in a future release.
-
- firewireFeatures.adl is the screen used to control the features of
- Firewire cameras.
-

- firewireVideoFormats.adl is the screen used to control the video formats
- and modes of Firewire cameras. This is a screen shot when the camera is not in Format
- 7.
-

- firewireVideoFormats.adl is the screen used to control the video formats
- and modes of Firewire cameras. This is a screen shot when the camera is in Format
- 7, in which case the video rate menu is not displayed.
-

+ For details on the meaning of the parameters to this function refer to the detailed + documentation on the WinFDC_Config function in the + firewireWinDCAM.cpp documentation and in the documentation for the constructor + for the FirewireWinDCAM + class. +
++ There an example IOC boot directory and startup script (iocBoot/iocFirewire/st.cmd) + provided with areaDetector. +
++ The following show the MEDM screens that are used to control the Firewire detectors. + Note that the general purpose screen ADBase.adl must be used to control many features, + but it exposes some controls that are not applicable to Firewire cameras, and lacks + many fields that are important for such cameras. A new Firewire-specific top-level + control screen will be added in a future release.
+
+ firewireFeatures.adl is the screen used to control the features of
+ Firewire cameras.
+

+ firewireVideoFormats.adl is the screen used to control the video formats
+ and modes of Firewire cameras. This is a screen shot when the camera is not in Format
+ 7.
+

+ firewireVideoFormats.adl is the screen used to control the video formats
+ and modes of Firewire cameras. This is a screen shot when the camera is in Format
+ 7, in which case the video rate menu is not displayed.
+

- This is a driver for the mar345 detector from - Marresearch GmbH. It implements many of the parameters in asynNDArrayDriver.h - and ADDriver.h. It also implements a number of parameters that are specific to the - mar345 detector.
-- The interface to the detector is via a TCP/IP socket interface to the mar345dtb - program that Marresearch provides. The mar345dtb program must be started before - the areaDetector software is started. -
-- mar345dtb must be configured to accepts commands on a TCP/IP socket port. This is - done by editing the file /home/mar345/tables/config.xxx (where xxx is the serial - number of that detector) and editing the COMMAND line to the following format:
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + + ++ This is a driver for the mar345 detector from + Marresearch GmbH.
++ The interface to the detector is via a TCP/IP socket interface to the mar345dtb + program that Marresearch provides. The mar345dtb program must be started before + the areaDetector software is started. +
++ mar345dtb must be configured to accepts commands on a TCP/IP socket port. This is + done by editing the file /home/mar345/tables/config.xxx (where xxx is the serial + number of that detector) and editing the COMMAND line to the following format:
COMMAND PORT 5001 --
- where 5001 is the TCP/IP port to use. Any high port number can be used, but it must - agree with the one specified in the areaDetector mar345Config command described - below.
-- The mar345dtb program saves the data to disk as compressed binary files. The areaDetector - software reads these disk files in order to read the data, because mar345dtb does - not provide another mechanism to access the data. -
-- This driver inherits from ADDriver. The - mar345 class documentation describes this class in detail.
-- The following table describes how the mar345 driver implements some of the standard - driver parameters. -
-| - 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 | -
|---|---|---|
| - ADAcquire | -- $(P$(R)Acquire | -
- Setting this to 1 starts an acquisition sequence. If ADNumImages is greater than
- 1 then it acquires multiple frames. For each frame it does the following:
-
|
-
| - ADNumImages | -- $(P$(R)NumImages | -- Controls the number of images to acquire when ADImageMode is ADImageMultiple. | -
| - ADAcquirePeriod | -- $(P$(R)AcquirePeriod | -- Controls the period between images when ADImageMode is ADImageMultiple or ADImageContinuous. - If this is greater than the acquisition time plus readout overhead then the driver - will wait until the period has elapsed before starting the next acquisition. | -
| - NDFilePath | -- $(P$(R)FilePath | -- Controls the path for saving images. It must be a valid path for mar345dtb and - for the areaDetector driver, which is normally running in an EPICS IOC. If mar345dtb - and the EPICS IOC are not running on the same machine then soft links will typically - be used to make the paths look identical. | -
| - NDFileFormat | -- $(P)$(R)FileFormat | -- mar345 only supports mar345 format binary files. - | -
| - NDStatus | -- $(P)$(R)DetectorState_RBV | -- mar345 replaces the state strings with the following: Exposing, Scanning, Erasing, - Changing Mode, Aborting, Error, and Waiting. - | -
- It is useful to use NDPluginROI to define an ROI containing the entire mar345 detector. - The MaxValue_RBV PV in this ROI can be monitored to make sure that the 16-bit limit - of 65,535 is not being approached in any pixel. -
-
- The mar345 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 mar345ScanSize.
-
| - Parameter Definitions in mar345.cpp and EPICS Record Definitions in mar345.template | -||||||
| - Enum name | -- asyn interface | -- Access | -- Description | -- drvUser string | -- EPICS record name | -- EPICS record type | -
|---|---|---|---|---|---|---|
| - Readout parameters | -||||||
|
- mar345 - ScanSize |
- - asynInt32 | -- r/w | -- The detector diameter to read out. Choices are 180mm, 240mm, 300mm, and 345mm. | -- MAR_SIZE | -
- $(P)$(R)ScanSize - $(P)$(R)ScanSize_RBV |
-
- mbbo
- - mbbi - |
-
|
- mar345 - ScanResolution |
- - asynInt32 | -- r/w | -- The pixel size to use when reading the detector out. Choices are 0.10 and 0.15mm. | -- MAR_RESOLUTION | -
- $(P)$(R)ScanResolution - $(P)$(R)ScanResolution_RBV |
-
- mbbo
- - mbbi - |
-
|
- mar345 - ChangeMode |
- - asynInt32 | -- r/w | -- Writing 1 to this parameter causes the ScanSize and ScanResolution values to be - sent to the server, changing the scan mode. This is not strictly necessary, because - the size and resolution is also encoded in the file extension used in the scan command. - However, changing the mode before doing a scan reduces the time for the scan, because - the detector is already configured for the correct mode. | -- MAR_CHANGE_MODE | -
- $(P)$(R)ChangeMode - $(P)$(R)ChangedMode_RBV |
-
- busy
- - bi - |
-
| - Erase parameters | -||||||
|
- mar345 - EraseMode |
- - asynInt32 | -- r/w | -- Controls whether an erase cycle should be automatically performed during acquisition. - Choices are None, Before expose, and After scan. | -- MAR_ERASE_MODE | -
- $(P)$(R)EraseMode - $(P)$(R)EraseMode_RBV |
-
- mbbo
- - mbbi - |
-
|
- mar345 - NumErase |
- - asynInt32 | -- r/w | -- The number of erase cycles to perform each time the detector is erased, either because - the mar345Erase parameter is set to 1, or because of an automatic erase as part - of an acquisition. | -- MAR_NUM_ERASE | -
- $(P)$(R)NumErase - $(P)$(R)NumErase_RBV |
-
- longout
- - longin - |
-
|
- mar345 - Erase |
- - asynInt32 | -- r/w | -- Write 1 to this parameter to initiate erasing the detector. The detector will be - erased multiple times if mar345NumErase is greater than 1. | -- MAR_ERASE | -
- $(P)$(R)Erase - $(P)$(R)Erase_RBV |
-
- busy
- - bi - |
-
| - Abort parameters | -||||||
|
- mar345 - Abort |
- - asynInt32 | -- r/w | -- Writing 1 to this parameter aborts the current operation as soon as possible and - returns the driver to the idle state. Note however that commands to the mar345 server - cannot be aborted, so the driver must wait for the current command to complete. | -- MAR_ABORT | -
- $(P)$(R)Abort - $(P)$(R)Abort_RBV |
-
- bo
- - bi - |
-
| - Debugging | -||||||
| - N/A | -- N/A | -- N/A | -- asyn record to control debugging communication with mar345dtb program | -- N/A | -- $(P)$(R)marSserverAsyn | -- asyn | -
- The mar345 driver does not support the following standard driver parameters because - they are not supported in the mar345dtb program:
-- The mar345 driver is created with the mar345Config command, either from C/C++ or - from the EPICS IOC shell.
+ ++ where 5001 is the TCP/IP port to use. Any high port number can be used, but it must + agree with the one specified in the areaDetector mar345Config command described + below.
++ The mar345dtb program saves the data to disk as compressed binary files. The areaDetector + software reads these disk files in order to read the data, because mar345dtb does + not provide another mechanism to access the data. +
++ 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 mar345 detector. The mar345 + class documentation describes this class in detail.
++ The following table describes how the mar345 driver implements some of the standard + driver parameters. +
+| + 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 | +
|---|---|---|
| + ADAcquire | ++ $(P$(R)Acquire | +
+ Setting this to 1 starts an acquisition sequence. If ADNumImages is greater than
+ 1 then it acquires multiple frames. For each frame it does the following:
+
|
+
| + ADNumImages | ++ $(P$(R)NumImages | ++ Controls the number of images to acquire when ADImageMode is ADImageMultiple. | +
| + ADAcquirePeriod | ++ $(P$(R)AcquirePeriod | ++ Controls the period between images when ADImageMode is ADImageMultiple or ADImageContinuous. + If this is greater than the acquisition time plus readout overhead then the driver + will wait until the period has elapsed before starting the next acquisition. | +
| + NDFilePath | ++ $(P$(R)FilePath | ++ Controls the path for saving images. It must be a valid path for mar345dtb and + for the areaDetector driver, which is normally running in an EPICS IOC. If mar345dtb + and the EPICS IOC are not running on the same machine then soft links will typically + be used to make the paths look identical. | +
| + NDFileFormat | ++ $(P)$(R)FileFormat | ++ mar345 only supports mar345 format binary files. + | +
| + NDStatus | ++ $(P)$(R)DetectorState_RBV | ++ mar345 replaces the state strings with the following: Exposing, Scanning, Erasing, + Changing Mode, Aborting, Error, and Waiting. + | +
+ It is useful to use NDPluginROI to define an ROI containing the entire mar345 detector. + The MaxValue_RBV PV in this ROI can be monitored to make sure that the 16-bit limit + of 65,535 is not being approached in any pixel. +
+
+ The mar345 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 mar345ScanSize.
+
| + Parameter Definitions in mar345.cpp and EPICS Record Definitions in mar345.template | +||||||
| + Enum name | ++ asyn interface | ++ Access | ++ Description | ++ drvUser string | ++ EPICS record name | ++ EPICS record type | +
|---|---|---|---|---|---|---|
| + Readout parameters | +||||||
|
+ mar345 + ScanSize |
+ + asynInt32 | ++ r/w | ++ The detector diameter to read out. Choices are 180mm, 240mm, 300mm, and 345mm. | ++ MAR_SIZE | +
+ $(P)$(R)ScanSize + $(P)$(R)ScanSize_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ mar345 + ScanResolution |
+ + asynInt32 | ++ r/w | ++ The pixel size to use when reading the detector out. Choices are 0.10 and 0.15mm. | ++ MAR_RESOLUTION | +
+ $(P)$(R)ScanResolution + $(P)$(R)ScanResolution_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ mar345 + ChangeMode |
+ + asynInt32 | ++ r/w | ++ Writing 1 to this parameter causes the ScanSize and ScanResolution values to be + sent to the server, changing the scan mode. This is not strictly necessary, because + the size and resolution is also encoded in the file extension used in the scan command. + However, changing the mode before doing a scan reduces the time for the scan, because + the detector is already configured for the correct mode. | ++ MAR_CHANGE_MODE | +
+ $(P)$(R)ChangeMode + $(P)$(R)ChangedMode_RBV |
+
+ busy
+ + bi + |
+
| + Erase parameters | +||||||
|
+ mar345 + EraseMode |
+ + asynInt32 | ++ r/w | ++ Controls whether an erase cycle should be automatically performed during acquisition. + Choices are None, Before expose, and After scan. | ++ MAR_ERASE_MODE | +
+ $(P)$(R)EraseMode + $(P)$(R)EraseMode_RBV |
+
+ mbbo
+ + mbbi + |
+
|
+ mar345 + NumErase |
+ + asynInt32 | ++ r/w | ++ The number of erase cycles to perform each time the detector is erased, either because + the mar345Erase parameter is set to 1, or because of an automatic erase as part + of an acquisition. | ++ MAR_NUM_ERASE | +
+ $(P)$(R)NumErase + $(P)$(R)NumErase_RBV |
+
+ longout
+ + longin + |
+
|
+ mar345 + Erase |
+ + asynInt32 | ++ r/w | ++ Write 1 to this parameter to initiate erasing the detector. The detector will be + erased multiple times if mar345NumErase is greater than 1. | ++ MAR_ERASE | +
+ $(P)$(R)Erase + $(P)$(R)Erase_RBV |
+
+ busy
+ + bi + |
+
| + Abort parameters | +||||||
|
+ mar345 + Abort |
+ + asynInt32 | ++ r/w | ++ Writing 1 to this parameter aborts the current operation as soon as possible and + returns the driver to the idle state. Note however that commands to the mar345 server + cannot be aborted, so the driver must wait for the current command to complete. | ++ MAR_ABORT | +
+ $(P)$(R)Abort + $(P)$(R)Abort_RBV |
+
+ bo
+ + bi + |
+
| + Debugging | +||||||
| + N/A | ++ N/A | ++ N/A | ++ asyn record to control debugging communication with mar345dtb program | ++ N/A | ++ $(P)$(R)marSserverAsyn | ++ asyn | +
+ The mar345 driver does not support the following standard driver parameters because + they are not supported in the mar345dtb program:
++ The mar345 driver is created with the mar345Config command, either from C/C++ or + from the EPICS IOC shell.
int mar345Config(const char *portName, const char *serverPort,
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 mar345Config function in the - mar345.cpp documentation and in the documentation for the constructor for - the mar345 class. -
-- There an example IOC boot directory and startup script (iocBoot/iocMAR345/st.cmd) - provided with areaDetector. -
-- The following show the MEDM screens that are used to control the mar345 detector. - Note that the general purpose screen ADBase.adl can be used, but it exposes many - controls that are not applicable to the mar345, and lacks some fields that are important - for the mar345.
-
- mar345.adl is the main screen used to control the mar345 driver.
-

- The mar345 is definitely not a fast detector! The following measurements show the - time to perform various erase and scan operations. Note that because the mar345 - file format is compressed the file sizes are typically much less than the image - sizes listed.
-| - Scan diameter | -- Pixel size | -- Image dimensions | -- Image size (MB) | -- Time to scan | -- Time to erase | -
|---|---|---|---|---|---|
| - 180 mm - | -- 0.15 mm - | -- 1200x1200 - | -- 2.7 - | -- 38.6 - | -- 37.8 - | -
| - 240 mm - | -- 0.15 mm - | -- 1600x1600 - | -- 4.9 - | -- 50.4 - | -- 50.8 - | -
| - 300 mm - | -- 0.15 mm - | -- 2000x2000 - | -- 7.6 - | -- 74.7 - | -- 66.9 - | -
| - 345 mm - | -- 0.15 mm - | -- 2300x2300 - | -- 10.1 - | -- 88.6 - | -- 82.7 - | -
| - 180 mm - | -- 0.10 mm - | -- 1800x1800 - | -- 6.2 - | -- 46.4 - | -- 45.9 - | -
| - 240 mm - | -- 0.10 mm - | -- 2400x2400 - | -- 11.0 - | -- 71.9 - | -- 63.8 - | -
| - 300 mm - | -- 0.10 mm - | -- 3000x3000 - | -- 17.2 - | -- 89.1 - | -- 87.0 - | -
| - 345 mm - | -- 0.10 mm - | -- 3450x3450 - | -- 22.7 - | -- 107.5 - | -- 107.1 - | -
- The following are some current restrictions of the mar345 driver:
-+ For details on the meaning of the parameters to this function refer to the detailed + documentation on the mar345Config function in the + mar345.cpp documentation and in the documentation for the constructor for + the mar345 class. +
++ There an example IOC boot directory and startup script (iocBoot/iocMAR345/st.cmd) + provided with areaDetector. +
++ The following show the MEDM screens that are used to control the mar345 detector. + Note that the general purpose screen ADBase.adl can be used, but it exposes many + controls that are not applicable to the mar345, and lacks some fields that are important + for the mar345.
+
+ mar345.adl is the main screen used to control the mar345 driver.
+

+ The mar345 is definitely not a fast detector! The following measurements show the + time to perform various erase and scan operations. Note that because the mar345 + file format is compressed the file sizes are typically much less than the image + sizes listed.
+| + Scan diameter | ++ Pixel size | ++ Image dimensions | ++ Image size (MB) | ++ Time to scan | ++ Time to erase | +
|---|---|---|---|---|---|
| + 180 mm + | ++ 0.15 mm + | ++ 1200x1200 + | ++ 2.7 + | ++ 38.6 + | ++ 37.8 + | +
| + 240 mm + | ++ 0.15 mm + | ++ 1600x1600 + | ++ 4.9 + | ++ 50.4 + | ++ 50.8 + | +
| + 300 mm + | ++ 0.15 mm + | ++ 2000x2000 + | ++ 7.6 + | ++ 74.7 + | ++ 66.9 + | +
| + 345 mm + | ++ 0.15 mm + | ++ 2300x2300 + | ++ 10.1 + | ++ 88.6 + | ++ 82.7 + | +
| + 180 mm + | ++ 0.10 mm + | ++ 1800x1800 + | ++ 6.2 + | ++ 46.4 + | ++ 45.9 + | +
| + 240 mm + | ++ 0.10 mm + | ++ 2400x2400 + | ++ 11.0 + | ++ 71.9 + | ++ 63.8 + | +
| + 300 mm + | ++ 0.10 mm + | ++ 3000x3000 + | ++ 17.2 + | ++ 89.1 + | ++ 87.0 + | +
| + 345 mm + | ++ 0.10 mm + | ++ 3450x3450 + | ++ 22.7 + | ++ 107.5 + | ++ 107.1 + | +
+ The following are some current restrictions of the mar345 driver:
+- This is a driver for the MarCCD detectors from Rayonix/MarUSA. - It implements many of the parameters in asynNDArrayDriver.h and ADDriver.h. It also - implements a number of parameters that are specific to the MarCCD detectors.
-- The interface to the detector is via a TCP/IP socket interface to the marccd_server_socket - server that MarUSA provides. The marccd_server_socket program must be started before - the areaDetector software is started, by running the marccd program and executing - Acquire/Remote Control/Start. -
-- marccd must be using Version 1 of the remote protocol. This is normally done done - by editing the file marccd/configuration/marccd.conf and replacing the line
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + + ++ This is a driver for the MarCCD detectors from Rayonix/MarUSA. +
++ The interface to the detector is via a TCP/IP socket interface to the marccd_server_socket + server that MarUSA provides. The marccd_server_socket program must be started before + the areaDetector software is started, by running the marccd program and executing + Acquire/Remote Control/Start. +
++ marccd must be using Version 1 of the remote protocol. This is normally done done + by editing the file marccd/configuration/marccd.conf and replacing the line
include marccd_server_v0.conf --
- with
+ ++ with
include marccd_server_v1.conf --
- The file marccd_server_v1.conf should contain the lines:
+ ++ The file marccd_server_v1.conf should contain the lines:
remote_mode_server_command /home/marccd/contrib/marccd_server/marccd_server_socket remote_mode_server_arguments 2222 --
- The first line points to the location of the marccd_server_socket program that is
- used to implement remote control. In order to work with the areaDetector driver
- this must be a version of this program created after November 11, 2008 when support
- for the get_frameshift command was added. A recent version of this
- program can be downloaded from the
- Rayonix FTP site.
-
- The marccd program saves the data to disk as TIFF files. The areaDetector software - reads these disk files in order to read the data, because marccd does not provide - another mechanism to access the data. -
-- This driver inherits from ADDriver. The - marCCD class documentation describes this class in detail.
-- The following table describes how the MarCCD driver implements some of the standard - driver parameters. -
-| - 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 | -
|---|---|---|
| - ADFrameType | -- $(P$(R)FrameType | -
- The driver redefines the choices for the ADFrameType parameter (record $(P)$(R)FrameType)
- from ADDriver.h. The choices for the MarCCD are:
-
|
-
| - ADNumImages | -- $(P$(R)NumImages | -- Controls the number of images to acquire when ADImageMode is ADImageMultiple. | -
| - ADAcquirePeriod | -- $(P$(R)AcquirePeriod | -- Controls the period between images when ADImageMode is ADImageMultiple or ADImageContinuous. - If this is greater than the acquisition time plus readout overhead then the driver - will wait until the period has elapsed before starting the next acquisition. | -
| - ADReadStatus | -- $(P)$(R)ReadStatus | -- Writing 1 to this parameter causes the status to be read from the marccd server. - By processing or periodically scanning this record the status information can be - refreshed. This is normally not necessary, but if ADArrayCallbacks is 0 and marCCDOverlap - is 1 then the status will not indicate that the system is idle when acquisition - is complete, because the driver polling stops before the file is written. This record - can be used to eliminate the confusion that might cause. | -
| - NDFilePath | -- $(P$(R)FilePath | -- Controls the path for saving images. It must be a valid path for marccd and - for the areaDetector driver, which is normally running in an EPICS IOC. If marccd - and the EPICS IOC are not running on the same machine then soft links will typically - be used to make the paths look identical. | -
| - NDFileFormat | -- $(P)$(R)FileFormat | -- marccd only supports TIFF files. - | -
- It is useful to use NDPluginROI to define an ROI containing the entire marccd detector. - The MaxValue_RBV PV in this ROI can be monitored to make sure that the 16-bit limit - of 65,535 is not being approached in any pixel. -
-
- The MarCCD 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 marCCDState.
-
| - Parameter Definitions in marccd.cpp and EPICS Record Definitions in marccd.template | -||||||
| - Enum name | -- asyn interface | -- Access | -- Description | -- drvUser string | -- EPICS record name | -- EPICS record type | -
|---|---|---|---|---|---|---|
| - Status parameters | -||||||
|
- marCCD - State |
- - asynInt32 | -- r/o | -- State word returned by marccd server. The low-order 4-bits of this word are the - state of the marccd server, and will be Idle (0x0), Error (0x7), or Busy (0x8). - The next 20 bits encode the state of the 5 server tasks (Acquire, Readout, Correct, - Save, Dezinger) with 4-bits per task. Each task can be in the state Idle (0x0), - Queued (0x1), Executing (0x2), Error (0x4), or Reserved (0x8). | -- MAR_STATE | -- $(P)$(R)MarState_RBV | -- longin | -
|
- marCCD - Status |
- - asynInt32 | -- r/o | -- Status of the marccd server task (Idle, Error, or Busy) | -- MAR_STATUS | -- $(P)$(R)MarStatus_RBV | -- mbbi | -
|
- marCCDTask - AcquireStatus |
- - asynInt32 | -- r/o | -- Status of the marccd server acquire task (Idle, Queued, Executing, Error, or Reserved) | -- MAR_ACQUIRE_STATUS | -- $(P)$(R)MarAcquireStatus_RBV | -- mbbi | -
|
- marCCDTask - ReadoutStatus |
- - asynInt32 | -- r/o | -- Status of the marccd server readout task (Idle, Queued, Executing, Error, or Reserved) | -- MAR_READOUT_STATUS | -- $(P)$(R)MarReadoutStatus_RBV | -- mbbi | -
|
- marCCDTask - CorrectStatus |
- - asynInt32 | -- r/o | -- Status of the marccd server correct task (Idle, Queued, Executing, Error, or Reserved) | -- MAR_CORRECT_STATUS | -- $(P)$(R)MarCorrectStatus_RBV | -- mbbi | -
|
- marCCDTask - WritingStatus |
- - asynInt32 | -- r/o | -- Status of the marccd server file writing task (Idle, Queued, Executing, Error, or - Reserved) | -- MAR_WRITING_STATUS | -- $(P)$(R)MarWritingStatus_RBV | -- mbbi | -
|
- marCCDTask - DezingerStatus |
- - asynInt32 | -- r/o | -- Status of the marccd server dezinger task (Idle, Queued, Executing, Error, or Reserved) | -- MAR_DEZINGER_STATUS | -- $(P)$(R)MarDezingerStatus_RBV | -- mbbi | -
| - Optimization parameters | -||||||
|
- marCCD - Overlap |
- - asynInt32 | -- r/w | -- The marccd server has 5 tasks (Acquire, Readout, Correct, Write, Dezinger) that - can overlap their operation. The areaDetector driver can exploit this to improve - performance in some circumstances. If this parameter is set to 1 (Overlap) then - the ADAcquire parameter will go to 0 (Done) when the Readout task is done executing, - but before the Correct and Write tasks have finished correcting and saving the file - to disk. This improves performance because the next image can begin as soon as ADAcquire - goes to done, and hence before the previous image is written to disk. Note, however - that this parameter must be set to 0 (Sequential) if callbacks are being used to - compute ROIs that are being used in data collection, e.g. in a scan. If this is - not done then the ROI information will be grabbed before it is updated and incorrect - scan data will result. | -- MAR_OVERLAP | -
- $(P)$(R)OverlapMode
- - $(P)$(R)OverlapMode_RBV |
-
- bo
- - bi |
-
| - Frameshift parameters | -||||||
|
- marCCD - Frameshift |
- - asynInt32 | -- r/w | -- marccd can be used for time-resolved studies by collecting multiple data sets before - reading out the detector. This is done by placing a mask in front of the detector - that restricts the x-rays to horizontal stripe. An exposure is made, and then an - external signal causes the detector to shift the image by the number of lines given - by this parameter. A number of images separated by times of a few milliseconds can - be collected, and then the detector is read out. Set this parameter to 0 to disable - frameshift mode. | -- MAR_FRAME_SHIFT | -
- $(P)$(R)FrameShift
- - $(P)$(R)FrameShift_RBV |
-
- longout
- - longin |
-
| - Timeout parameters | -||||||
|
- marCCD - TiffTimeout |
- - asynFloat64 | -- r/w | -- Timeout in seconds when reading a TIFF file. It should be set to several seconds, - because there it can take some time for the marccd server to write the file. | -- MAR_TIFF_TIMEOUT | -- $(P)$(R)ReadTiffTimeout | -- ao | -
| - Ancillary parameters. These parameters are written to the header of the marccd - TIFF file. | -||||||
|
- marCCD - DetectorDistance |
- - asynFloat64 | -- r/w | -- Distance from the sample to the detector (mm) | -- MAR_DETECTOR_DISTANCE | -- $(P)$(R)DetectorDistance | -- ao | -
|
- marCCD - BeamX |
- - asynFloat64 | -- r/w | -- X position of the direct beam on the detector (mm) | -- MAR_BEAM_X | -- $(P)$(R)BeamX | -- ao | -
|
- marCCD - BeamY |
- - asynFloat64 | -- r/w | -- Y position of the direct beam on the detector (mm) | -- MAR_BEAM_Y | -- $(P)$(R)BeamY | -- ao | -
|
- marCCD - StartPhi |
- - asynFloat64 | -- r/w | -- Starting value of phi rotation (deg) | -- MAR_START_PHI | -- $(P)$(R)StartPhi | -- ao | -
|
- marCCD - RotationAxis |
- - asynOctet | -- r/w | -- Rotation axis being used (phi, omega, etc.) | -- MAR_ROTATION_AXIS | -- $(P)$(R)RotationAxis | -- stringout | -
|
- marCCD - RotationRange |
- - asynFloat64 | -- r/w | -- Rotation range of the rotation axis. | -- MAR_ROTATION_RANGE | -- $(P)$(R)RotationRange | -- ao | -
|
- marCCD - TwoTheta |
- - asynOctet | -- r/w | -- Detector two-theta angle (deg); ignored if empty string; requires theta axis definition - with display name "TwoTheta" in marccd configuration file (e.g. "theta_display_name - TwoTheta") | -- MAR_TWO_THETA | -- $(P)$(R)TwoTheta | -- stringout | -
|
- marCCD - Wavelength |
- - asynFloat64 | -- r/w | -- Wavelength in Angstroms. | -- MAR_WAVELENGTH | -- $(P)$(R)Wavelength | -- ao | -
|
- marCCD - FileComments |
- - asynOctet | -- r/w | -- Comments for this file. | -- MAR_FILE_COMMENTS | -- $(P)$(R)FileComments | -- waveform | -
|
- marCCD - DatasetComments |
- - asynOctet | -- r/w | -- Comments for this dataset. | -- MAR_DATASET_COMMENTS | -- $(P)$(R)DatasetComments | -- waveform | -
| - Debugging | -||||||
| - N/A | -- N/A | -- N/A | -- asyn record to control debugging communication with marccd_server_socket program | -- N/A | -- $(P)$(R)marSserverAsyn | -- asyn | -
- The MarCCD driver does not support the following standard driver parameters because - they are not supported in the marccd program:
-- The marCCD driver is created with the marCCDConfig command, either from C/C++ or - from the EPICS IOC shell.
+ +
+ The first line points to the location of the marccd_server_socket program that is
+ used to implement remote control. In order to work with the areaDetector driver
+ this must be a version of this program created after November 11, 2008 when support
+ for the get_frameshift command was added. A recent version of this
+ program can be downloaded from the
+ Rayonix FTP site.
+
+ The marccd program saves the data to disk as TIFF files. The areaDetector software + reads these disk files in order to read the data, because marccd does not provide + another mechanism to access the data. +
++ 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 MarCCD detectors. The + marCCD class documentation describes this class in detail.
++ The following table describes how the MarCCD driver implements some of the standard + driver parameters. +
+| + 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 | +
|---|---|---|
| + ADFrameType | ++ $(P$(R)FrameType | +
+ The driver redefines the choices for the ADFrameType parameter (record $(P)$(R)FrameType)
+ from ADDriver.h. The choices for the MarCCD are:
+
|
+
| + ADNumImages | ++ $(P$(R)NumImages | ++ Controls the number of images to acquire when ADImageMode is ADImageMultiple. | +
| + ADAcquirePeriod | ++ $(P$(R)AcquirePeriod | ++ Controls the period between images when ADImageMode is ADImageMultiple or ADImageContinuous. + If this is greater than the acquisition time plus readout overhead then the driver + will wait until the period has elapsed before starting the next acquisition. | +
| + ADReadStatus | ++ $(P)$(R)ReadStatus | ++ Writing 1 to this parameter causes the status to be read from the marccd server. + By processing or periodically scanning this record the status information can be + refreshed. This is normally not necessary, but if ADArrayCallbacks is 0 and marCCDOverlap + is 1 then the status will not indicate that the system is idle when acquisition + is complete, because the driver polling stops before the file is written. This record + can be used to eliminate the confusion that might cause. | +
| + NDFilePath | ++ $(P$(R)FilePath | ++ Controls the path for saving images. It must be a valid path for marccd and + for the areaDetector driver, which is normally running in an EPICS IOC. If marccd + and the EPICS IOC are not running on the same machine then soft links will typically + be used to make the paths look identical. | +
| + NDFileFormat | ++ $(P)$(R)FileFormat | ++ marccd only supports TIFF files. + | +
+ It is useful to use NDPluginROI to define an ROI containing the entire marccd detector. + The MaxValue_RBV PV in this ROI can be monitored to make sure that the 16-bit limit + of 65,535 is not being approached in any pixel. +
+
+ The MarCCD 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 marCCDState.
+
| + Parameter Definitions in marccd.cpp and EPICS Record Definitions in marccd.template | +||||||
| + Enum name | ++ asyn interface | ++ Access | ++ Description | ++ drvUser string | ++ EPICS record name | ++ EPICS record type | +
|---|---|---|---|---|---|---|
| + Status parameters | +||||||
|
+ marCCD + State |
+ + asynInt32 | ++ r/o | ++ State word returned by marccd server. The low-order 4-bits of this word are the + state of the marccd server, and will be Idle (0x0), Error (0x7), or Busy (0x8). + The next 20 bits encode the state of the 5 server tasks (Acquire, Readout, Correct, + Save, Dezinger) with 4-bits per task. Each task can be in the state Idle (0x0), + Queued (0x1), Executing (0x2), Error (0x4), or Reserved (0x8). | ++ MAR_STATE | ++ $(P)$(R)MarState_RBV | ++ longin | +
|
+ marCCD + Status |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server task (Idle, Error, or Busy) | ++ MAR_STATUS | ++ $(P)$(R)MarStatus_RBV | ++ mbbi | +
|
+ marCCDTask + AcquireStatus |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server acquire task (Idle, Queued, Executing, Error, or Reserved) | ++ MAR_ACQUIRE_STATUS | ++ $(P)$(R)MarAcquireStatus_RBV | ++ mbbi | +
|
+ marCCDTask + ReadoutStatus |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server readout task (Idle, Queued, Executing, Error, or Reserved) | ++ MAR_READOUT_STATUS | ++ $(P)$(R)MarReadoutStatus_RBV | ++ mbbi | +
|
+ marCCDTask + CorrectStatus |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server correct task (Idle, Queued, Executing, Error, or Reserved) | ++ MAR_CORRECT_STATUS | ++ $(P)$(R)MarCorrectStatus_RBV | ++ mbbi | +
|
+ marCCDTask + WritingStatus |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server file writing task (Idle, Queued, Executing, Error, or + Reserved) | ++ MAR_WRITING_STATUS | ++ $(P)$(R)MarWritingStatus_RBV | ++ mbbi | +
|
+ marCCDTask + DezingerStatus |
+ + asynInt32 | ++ r/o | ++ Status of the marccd server dezinger task (Idle, Queued, Executing, Error, or Reserved) | ++ MAR_DEZINGER_STATUS | ++ $(P)$(R)MarDezingerStatus_RBV | ++ mbbi | +
| + Optimization parameters | +||||||
|
+ marCCD + Overlap |
+ + asynInt32 | ++ r/w | ++ The marccd server has 5 tasks (Acquire, Readout, Correct, Write, Dezinger) that + can overlap their operation. The areaDetector driver can exploit this to improve + performance in some circumstances. If this parameter is set to 1 (Overlap) then + the ADAcquire parameter will go to 0 (Done) when the Readout task is done executing, + but before the Correct and Write tasks have finished correcting and saving the file + to disk. This improves performance because the next image can begin as soon as ADAcquire + goes to done, and hence before the previous image is written to disk. Note, however + that this parameter must be set to 0 (Sequential) if callbacks are being used to + compute ROIs that are being used in data collection, e.g. in a scan. If this is + not done then the ROI information will be grabbed before it is updated and incorrect + scan data will result. | ++ MAR_OVERLAP | +
+ $(P)$(R)OverlapMode
+ + $(P)$(R)OverlapMode_RBV |
+
+ bo
+ + bi |
+
| + Frameshift parameters | +||||||
|
+ marCCD + Frameshift |
+ + asynInt32 | ++ r/w | ++ marccd can be used for time-resolved studies by collecting multiple data sets before + reading out the detector. This is done by placing a mask in front of the detector + that restricts the x-rays to horizontal stripe. An exposure is made, and then an + external signal causes the detector to shift the image by the number of lines given + by this parameter. A number of images separated by times of a few milliseconds can + be collected, and then the detector is read out. Set this parameter to 0 to disable + frameshift mode. | ++ MAR_FRAME_SHIFT | +
+ $(P)$(R)FrameShift
+ + $(P)$(R)FrameShift_RBV |
+
+ longout
+ + longin |
+
| + Timeout parameters | +||||||
|
+ marCCD + TiffTimeout |
+ + asynFloat64 | ++ r/w | ++ Timeout in seconds when reading a TIFF file. It should be set to several seconds, + because there it can take some time for the marccd server to write the file. | ++ MAR_TIFF_TIMEOUT | ++ $(P)$(R)ReadTiffTimeout | ++ ao | +
| + Ancillary parameters. These parameters are written to the header of the marccd + TIFF file. | +||||||
|
+ marCCD + DetectorDistance |
+ + asynFloat64 | ++ r/w | ++ Distance from the sample to the detector (mm) | ++ MAR_DETECTOR_DISTANCE | ++ $(P)$(R)DetectorDistance | ++ ao | +
|
+ marCCD + BeamX |
+ + asynFloat64 | ++ r/w | ++ X position of the direct beam on the detector (mm) | ++ MAR_BEAM_X | ++ $(P)$(R)BeamX | ++ ao | +
|
+ marCCD + BeamY |
+ + asynFloat64 | ++ r/w | ++ Y position of the direct beam on the detector (mm) | ++ MAR_BEAM_Y | ++ $(P)$(R)BeamY | ++ ao | +
|
+ marCCD + StartPhi |
+ + asynFloat64 | ++ r/w | ++ Starting value of phi rotation (deg) | ++ MAR_START_PHI | ++ $(P)$(R)StartPhi | ++ ao | +
|
+ marCCD + RotationAxis |
+ + asynOctet | ++ r/w | ++ Rotation axis being used (phi, omega, etc.) | ++ MAR_ROTATION_AXIS | ++ $(P)$(R)RotationAxis | ++ stringout | +
|
+ marCCD + RotationRange |
+ + asynFloat64 | ++ r/w | ++ Rotation range of the rotation axis. | ++ MAR_ROTATION_RANGE | ++ $(P)$(R)RotationRange | ++ ao | +
|
+ marCCD + TwoTheta |
+ + asynOctet | ++ r/w | ++ Detector two-theta angle (deg); ignored if empty string; requires theta axis definition + with display name "TwoTheta" in marccd configuration file (e.g. "theta_display_name + TwoTheta") | ++ MAR_TWO_THETA | ++ $(P)$(R)TwoTheta | ++ stringout | +
|
+ marCCD + Wavelength |
+ + asynFloat64 | ++ r/w | ++ Wavelength in Angstroms. | ++ MAR_WAVELENGTH | ++ $(P)$(R)Wavelength | ++ ao | +
|
+ marCCD + FileComments |
+ + asynOctet | ++ r/w | ++ Comments for this file. | ++ MAR_FILE_COMMENTS | ++ $(P)$(R)FileComments | ++ waveform | +
|
+ marCCD + DatasetComments |
+ + asynOctet | ++ r/w | ++ Comments for this dataset. | ++ MAR_DATASET_COMMENTS | ++ $(P)$(R)DatasetComments | ++ waveform | +
| + Debugging | +||||||
| + N/A | ++ N/A | ++ N/A | ++ asyn record to control debugging communication with marccd_server_socket program | ++ N/A | ++ $(P)$(R)marSserverAsyn | ++ asyn | +
+ The MarCCD driver does not support the following standard driver parameters because + they are not supported in the marccd program:
++ The marCCD driver is created with the marCCDConfig command, either from C/C++ or + from the EPICS IOC shell.
int marCCDConfig(const char *portName, const char *serverPort,
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 mar345Config function in the - marCCD.cpp documentation and in the documentation for the constructor for - the marCCD class. -
-- There an example IOC boot directory and startup script (iocBoot/iocMARCCD/st.cmd) - provided with areaDetector. -
-- The following show the MEDM screens that are used to control the MarCCD detector. - Note that the general purpose screen ADBase.adl can be used, but it exposes many - controls that are not applicable to the MarCCD, and lacks some fields that are important - for the MarCCD.
-
- marccd.adl is the main screen used to control the MarCCD driver.
-

- marccdAncillary.adl is the screen used to input ancillary information
- that is written to the MarCCD TIFF files.
-

- asynRecord.adl is used to control the debugging information printed
- by the asyn TCP/IP driver (asynTraceIODriver) and the EPICS device support (asynTraceIODevice).

- asynOctet.adl can be used to send any command to the marccd remote
- server and display the response. It can be loaded from the More menu in asynRecord.adl
- above.

- The following measurements were done to demonstrate the performance that can be - obtained with the areaDetector MarCCD driver. These measurements were made with - a MAR-165 CCD. The EPICS IOC was running on the same Linux machine as the marccd - program. The acquisition time was 1 second.
-| - Binning | -- Image size | -- marCCDOverlap | -- Time for 10 images | -- Overhead per image | -- Time per task | -
|---|---|---|---|---|---|
| - 2x2 - | -- 2048x2048 - | -- Sequential - | -- 50.0 - | -- 4.00 - | -
- Readout: 3.02
- - Correct: 0.56 - - Save: 0.20 - |
-
| - 2x2 - | -- 2048x2048 - | -- Overlap - | -- 46.2 - | -- 3.62 - | -- Same - | -
| - 4x4 - | -- 1024x1024 - | -- Sequential - | -- 29.0 - | -- 1.90 - | -
- Readout: 1.30
- - Correct: 0.28 - - Save: 0.06 - |
-
| - 4x4 - | -- 1024x1024 - | -- Overlap - | -- 28.7 - | -- 1.87 - | -- Same - | -
| - 8x8 - | -- 512x512 - | -- Sequential - | -- 24.0 - | -- 1.40 - | -
- Readout: 0.78
- - Correct: 0.29 - - Save: 0.06 - |
-
| - 8x8 - | -- 512x512 - | -- Overlap - | -- 23.6 - | -- 1.36 - | -- Same - | -
- The following are some current restrictions of the MarCCD driver:
-+ For details on the meaning of the parameters to this function refer to the detailed + documentation on the mar345Config function in the + marCCD.cpp documentation and in the documentation for the constructor for + the marCCD class. +
++ There an example IOC boot directory and startup script (iocBoot/iocMARCCD/st.cmd) + provided with areaDetector. +
++ The following show the MEDM screens that are used to control the MarCCD detector. + Note that the general purpose screen ADBase.adl can be used, but it exposes many + controls that are not applicable to the MarCCD, and lacks some fields that are important + for the MarCCD.
+
+ marccd.adl is the main screen used to control the MarCCD driver.
+

+ marccdAncillary.adl is the screen used to input ancillary information
+ that is written to the MarCCD TIFF files.
+

+ asynRecord.adl is used to control the debugging information printed
+ by the asyn TCP/IP driver (asynTraceIODriver) and the EPICS device support (asynTraceIODevice).

+ asynOctet.adl can be used to send any command to the marccd remote
+ server and display the response. It can be loaded from the More menu in asynRecord.adl
+ above.

+ The following measurements were done to demonstrate the performance that can be + obtained with the areaDetector MarCCD driver. These measurements were made with + a MAR-165 CCD. The EPICS IOC was running on the same Linux machine as the marccd + program. The acquisition time was 1 second.
+| + Binning | ++ Image size | ++ marCCDOverlap | ++ Time for 10 images | ++ Overhead per image | ++ Time per task | +
|---|---|---|---|---|---|
| + 2x2 + | ++ 2048x2048 + | ++ Sequential + | ++ 50.0 + | ++ 4.00 + | +
+ Readout: 3.02
+ + Correct: 0.56 + + Save: 0.20 + |
+
| + 2x2 + | ++ 2048x2048 + | ++ Overlap + | ++ 46.2 + | ++ 3.62 + | ++ Same + | +
| + 4x4 + | ++ 1024x1024 + | ++ Sequential + | ++ 29.0 + | ++ 1.90 + | +
+ Readout: 1.30
+ + Correct: 0.28 + + Save: 0.06 + |
+
| + 4x4 + | ++ 1024x1024 + | ++ Overlap + | ++ 28.7 + | ++ 1.87 + | ++ Same + | +
| + 8x8 + | ++ 512x512 + | ++ Sequential + | ++ 24.0 + | ++ 1.40 + | +
+ Readout: 0.78
+ + Correct: 0.29 + + Save: 0.06 + |
+
| + 8x8 + | ++ 512x512 + | ++ Overlap + | ++ 23.6 + | ++ 1.36 + | ++ Same + | +
+ The following are some current restrictions of the MarCCD driver:
+- This plugin is a tool for converting the color mode of NDArray data. -
+ NDPluginColorConvert is a tool for converting the color mode of NDArray data. It + receives an input NDArray with one color mode and outputs another NDArray with a + (potentially) different color mode. All other attributes of the array are preserved.- NDPluginColorConvert inherits from NDPluginDriver. NDPluginColorConvert receives - an input NDArray with one color mode and outputs another NDArray with a (potentially) - different color mode. All other attributes of the array are preserved. The NDPluginColorConvert - public interface is defined in NDPluginColorConvert.h as follows:
-class NDPluginColorConvert : public NDPluginDriver {
-public:
- NDPluginColorConvert(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);
- asynStatus drvUserCreate(asynUser *pasynUser, const char *drvInfo,
- const char **pptypeName, size_t *psize);
-
- /* These methods are just for this class */
- template <typename epicstype> void convertColor(NDArray *pArray);
-};
-...
-}
-
+ NDPluginColorConvert inherits from NDPluginDriver. The
+ NDPluginColorConvert class documentation describes this class in detail.
+
NDPluginColorConvert defines the following parameters. It also implements all of the standard plugin parameters from NDPluginDriver @@ -123,72 +106,18 @@ public: The NDPluginColorConvert plugin is created with the following command, either from C/C++ or from the EPICS IOC shell.
-int drvNDColorConvertConfigure(const char *portName, int queueSize, int blockingCallbacks, - const char *NDArrayPort, int NDArrayAddr, - int maxBuffers, size_t maxMemory); +int NDColorConvertConfigure(const char *portName, int queueSize, int blockingCallbacks, + const char *NDArrayPort, int NDArrayAddr, + int maxBuffers, 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. - | -
- maxBuffers |
- - Maximum number of NDArray buffers to be created for plugin callbacks, i.e. for plugins - that will be getting called from this plugin. Passed to the constructor for the - NDPluginDriver base class. | -
- maxMemory |
- - Maximum number of bytes of memory to be allocated from the NDArrayPool. Passed to - the constructor for the NDPluginDriver base class. | -
+ For details on the meaning of the parameters to this function refer to the detailed + documentation on the NDColorConvertConfigure function in the + NDPluginColorConvert.cpp documentation and in the documentation for the constructor + for the NDPluginColorConvert + class. +
diff --git a/documentation/NDPluginFile.html b/documentation/NDPluginFile.html index be7f11d..aa1ba18 100755 --- a/documentation/NDPluginFile.html +++ b/documentation/NDPluginFile.html @@ -53,13 +53,14 @@ they all must fit in a memory buffer. It is the fastest mode, with the least probability of dropping arrays, because no disk I/O is required while capture is in progress.
At least one array with the same datatype, array size, and attributes must have @@ -87,8 +88,8 @@ mode are supported by writing multiple JPEG files.
- The JPEG plugin supports the Int32 parameter NDFileJPEGQuality to control the amount of - compression in the file. This parameter varies from 0 (maximum compression, lowest + The JPEG plugin supports the Int32 parameter NDFileJPEGQuality to control the amount + of compression in the file. This parameter varies from 0 (maximum compression, lowest quality) to 100 (least compression, best quality). NDFileJPEG.template defines 2 records to support this: $(P)$(R)JPEGQuality (longout) and $(P)$(R)JPEGQuality_RBV (longin). @@ -313,17 +314,17 @@ variables: NeXus (HDF) file plugin
- A plugin to write NeXus files was - written by John Hammonds from the APS. NeXus is a standard format for x-ray and - neutron data based on HDF. This is a very general - file format, capable of storing any type of array data and meta-data. + A plugin to write NeXus files + was written by John Hammonds from the APS. NeXus is a standard format for x-ray + and neutron data based on HDF. This is a very + general file format, capable of storing any type of array data and meta-data.
The NDFileNexus class documentation describes this class in detail.
- The NDFileNexus plugin is created with the NDFileNexusConfigure command, either from - C/C++ or from the EPICS IOC shell.
+ The NDFileNexus plugin is created with the NDFileNexusConfigure command, either + from C/C++ or from the EPICS IOC shell.NDFileNexusConfigure (const char *portName, int queueSize, int blockingCallbacks,
const char *NDArrayPort, int NDArrayAddr, size_t maxMemory,
int priority, int stackSize)
@@ -333,8 +334,10 @@ variables:
documentation on the NDFileNexusConfigure function in the
NDFileNexus.cpp documentation and in the documentation for the constructor
for the NDFileNexus class.
- NDFileNeXus uses 2 additional parameters to define the location of an XML file that is read to determine
- the contents of the NeXus files written by this plugin. These are described in the following table.
+
+ NDFileNeXus uses 2 additional parameters to define the location of an XML file that
+ is read to determine the contents of the NeXus files written by this plugin. These
+ are described in the following table.
| TEMPLATE_FILE_PATH |
- $(P)$(R)TemplateFilePath + $(P)$(R)TemplateFilePath $(P)$(R)TemplateFilePath_RBV |
- waveform + waveform waveform |
| TEMPLATE_FILE_NAME |
- $(P)$(R)TemplateFileName + $(P)$(R)TemplateFileName $(P)$(R)TemplateFileName_RBV |
- waveform + waveform waveform |
There is currently no documentation on the contents of the XML template file. However, there are example - XML template files in the iocSimDetector and iocPerkinElmer directories. Documentation on the XML file - contents will be written ASAP.
++ There is currently no documentation on the contents of the XML template file. However, + there are example XML template files in the iocSimDetector and iocPerkinElmer directories. + Documentation on the XML file contents will be written ASAP.
The following is the MEDM screen that provides access to the parameters in NDPluginDriver.h - and NDPluginFile.h through records in NDPluginBase.template and NDFile.template. - This is the MEDM screen that is used to control the saving of images to disk in netCDF format.
+ and NDPluginFile.h through records in NDPluginBase.template and NDFileNetCDF.template. + This is the MEDM screen that is used to control the saving of images to disk in + netCDF format.
- 