git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@13406 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
635 lines
23 KiB
HTML
Executable File
635 lines
23 KiB
HTML
Executable File
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>areaDetector Roper driver</title>
|
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
|
|
</head>
|
|
<body>
|
|
<div style="text-align: center">
|
|
<h1>
|
|
areaDetector Roper driver</h1>
|
|
<h2>
|
|
August 9, 2011</h2>
|
|
<h2>
|
|
Mark Rivers</h2>
|
|
<h2>
|
|
University of Chicago</h2>
|
|
</div>
|
|
<h2>
|
|
Table of Contents</h2>
|
|
<ul>
|
|
<li><a href="#Introduction">Introduction</a></li>
|
|
<li><a href="#StandardNotes">Implementation of standard driver parameters</a></li>
|
|
<li><a href="#Driver_parameters">Roper specific parameters</a></li>
|
|
<li><a href="#Unsupported">Unsupported standard driver parameters</a></li>
|
|
<li><a href="#Configuration">Configuration</a></li>
|
|
<li><a href="#MEDM_screens">MEDM screens</a></li>
|
|
<li><a href="#Performance_measurements">Performance measurements</a> </li>
|
|
<li><a href="#Restrictions">Restrictions</a> </li>
|
|
</ul>
|
|
<h2 id="Introduction" style="text-align: left">
|
|
Introduction</h2>
|
|
<p>
|
|
This is a driver for the <a href="http://www.roperscientific.com/">Roper Scientific</a>
|
|
detectors, which includes those from <a href="http://www.princetoninstruments.com/">
|
|
Princeton Instruments</a> and <a href="http://www.photomet.com/">Photometrics</a>.
|
|
</p>
|
|
<p>
|
|
The interface to the detector is via a the MicroSoft COM interface to the <b>WinView</b>
|
|
or <b>WinSpec</b> programs that Roper provides. The term WinView will be used in
|
|
this document to refer to either WinView or WinSpec, as they are equivalent in terms
|
|
of the areaDetector driver. The areaDetector driver effectively "drives" WinView
|
|
through the COM interface, performing many of the same operations that can be performed
|
|
using the WinView GUI. The advantage of this communication mechanism is that the
|
|
user can continue to use WinView for viewing images and for configuration operations.
|
|
WinView is normally started before the areaDetector software is started. However,
|
|
if the areaDetector software is started without WinView running, then WinView will
|
|
be started in the background, and will not be visible. This may be desirable in
|
|
some applications.
|
|
</p>
|
|
<p>
|
|
Because EPICS and the WinView GUI can control many of the same parameters the user
|
|
must be aware of the interactions between the two control systems. The basic rule
|
|
is that the value of a parameter will be determined by whichever control system
|
|
last wrote to that parameter. Both EPICS and WinView will correctly display the
|
|
current value of a parameter no matter how it was last changed. However, in WinView
|
|
this requires closing and re-opening the window that controls that parameter, such
|
|
as the Experiment Setup tabbed windows, to see any changes made by EPICS since the
|
|
window was opened.
|
|
</p>
|
|
<p>
|
|
This driver inherits from <a href="areaDetectorDoc.html#ADDriver">ADDriver</a>.
|
|
It implements many of the parameters <a href="areaDetectorDoxygenHTML/asyn_n_d_array_driver_8h.html">
|
|
asynNDArrayDriver.h</a> and in <a href="areaDetectorDoxygenHTML/_a_d_driver_8h.html">
|
|
ADArrayDriver.h</a>. It also implements a number of parameters that are specific
|
|
to the Roper detectors.The <a href="areaDetectorDoxygenHTML/classroper.html">roper
|
|
class documentation</a> describes this class in detail.</p>
|
|
<h2 id="StandardNotes" style="text-align: left">
|
|
Implementation of standard driver parameters</h2>
|
|
<p>
|
|
The following table describes how the Roper driver implements some of the standard
|
|
driver parameters. Note that there are 3 possible levels of nested acquisition looping
|
|
when using the Roper driver. From the innermost to outermost loop these are as follows:</p>
|
|
<ol>
|
|
<li>ADNumExposures ($(P)$(R)NumExposures). This controls the number of exposures per
|
|
image. This is called "accumulations" in Roper's terminology.</li>
|
|
<li>ADNumImages ($(P)$(R)NumImages). This controls the number of images per acquisition.
|
|
This is also called "number of images" in Roper's terminology. These images will
|
|
all be acquired into a single 3-D array, and saved to a single SPE file in WinView.</li>
|
|
<li>RoperNumAcquisitions ($(P)$(R)NumNumAcquisitions). This controls the number of
|
|
times that the driver will repeat an acquisition sequence. This is has no equivalent
|
|
in WinView, it is handled entirely by the areaDetector driver. It can be used to
|
|
acquire multiple data sets, where each is controlled by the above parameters.</li>
|
|
</ol>
|
|
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
|
|
<tbody>
|
|
<tr>
|
|
<td align="center" colspan="3">
|
|
<b>Implementation of Parameters in asynNDArrayDriver.h and ADDriver.h, and EPICS Record
|
|
Definitions in ADBase.template and NDFile.template</b></td>
|
|
</tr>
|
|
<tr>
|
|
<th>
|
|
Parameter index variable</th>
|
|
<th>
|
|
EPICS record name</th>
|
|
<th>
|
|
Description</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADImageMode</td>
|
|
<td>
|
|
$(P)$(R)ImageMode</td>
|
|
<td>
|
|
The driver redefines the choices for the ADImageMode parameter (record $(P)$(R)ImageMode)
|
|
from ADDriver.h. The choices for the Roper are:
|
|
<ul>
|
|
<li>Normal: This is the same as pressing the Acquire button in WinView. It may collect
|
|
more than 1 exposure per image if NumExposures>1, more than 1 image per acquisition
|
|
if NumImages>1, and more than 1 aquisition if NumAcquisitions>1.</li>
|
|
<li>Continuous: This will cause the driver to perform acquisitions indefinitely, i.e.
|
|
it acts as if NumAcquisitions is infinite.</li>
|
|
<li>Focus: This is the same as pressing the Focus button in WinView. It causes acquisition
|
|
to proceed as quickly as possible. It does not save the data. It currently does
|
|
not call the callbacks for each frame, so the images can only be seen in WinView
|
|
and not in EPICS. This may be fixed in a future release. </li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADAcquirePeriod</td>
|
|
<td>
|
|
$(P)$(R)AcquirePeriod</td>
|
|
<td>
|
|
Controls the period between images when ADImageMode is Continuous. 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.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADNumExposures</td>
|
|
<td>
|
|
$(P)$(R)NumExposures</td>
|
|
<td>
|
|
Controls the number of exposures (accumulations) to acquire into a single image.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADNumImages</td>
|
|
<td>
|
|
$(P)$(R)NumImages</td>
|
|
<td>
|
|
Controls the number of images to acquire into a single 3-D data set.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADTriggerMode</td>
|
|
<td>
|
|
$(P)$(R)TriggerMode</td>
|
|
<td>
|
|
The driver redefines the choices for the ADTriggerMode parameter (record $(P)$(R)TriggerMode)
|
|
from ADDriver.h. The choices for the Roper are:
|
|
<ul>
|
|
<li>Free run: This acquires images as quickly as possible given the exposure and readout
|
|
times.</li>
|
|
<li>Ext. sync: This acquires one image for each external trigger pulse.</li>
|
|
<li>Bulb trig.: The exposure time is determined by the external trigger pulse width.
|
|
</li>
|
|
<li>Single trig.: A single external trigger pulse will acquire an entire sequence
|
|
of images. </li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
NDFileFormat</td>
|
|
<td>
|
|
$(P)$(R)FileFormat</td>
|
|
<td>
|
|
The driver redefines the choices for the NDFileFormat parameter (record $(P)$(R)FileFormat)
|
|
from asynNDArrayDriver.h. The choices for the Roper are:
|
|
<ul>
|
|
<li>SPE: This is the default file format for WinView. It is a binary format with a
|
|
header containing all of the acquisition and setup information.</li>
|
|
<li>TIFF: TIFF files that contain the full resolution of the image data. The TIFF
|
|
files do not contain any acquisition or setup information.</li>
|
|
<li>8-bit TIFF: 8-bit TIFF files that contain limited resolution image data. The TIFF
|
|
files do not contain any acquisition or setup information. </li>
|
|
</ul>
|
|
The driver does not automatically change the file extension (.SPE, .TIFF, etc.)
|
|
when the FileFormat is changed, the user should do this using the FileTemplate record.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
ADGain</td>
|
|
<td>
|
|
$(P)$(R)Gain</td>
|
|
<td>
|
|
The precision of the $(P)$(R)Gain record is changed to 0 because the gain in WinView
|
|
is an integer. Allowed values are detector dependent, but 1 and 2 are typically
|
|
supported.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="Driver_parameters" style="text-align: left">
|
|
Roper specific parameters</h2>
|
|
<p>
|
|
The Roper 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 parameter index
|
|
variable names have been split into 2 lines, but these are just a single name, for
|
|
example <code>marCCDState</code>.
|
|
</p>
|
|
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
|
|
<tbody>
|
|
<tr>
|
|
<td align="center" colspan="7">
|
|
<b>Parameter Definitions in roper.cpp and EPICS Record Definitions in roper.template</b></td>
|
|
</tr>
|
|
<tr>
|
|
<th>
|
|
Parameter index variable</th>
|
|
<th>
|
|
asyn interface</th>
|
|
<th>
|
|
Access</th>
|
|
<th>
|
|
Description</th>
|
|
<th>
|
|
drvInfo string</th>
|
|
<th>
|
|
EPICS record name</th>
|
|
<th>
|
|
EPICS record type</th>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" colspan="7">
|
|
<b>Status parameters</b></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Roper<br />
|
|
NumAcquisitions</td>
|
|
<td>
|
|
asynInt32</td>
|
|
<td>
|
|
r/w</td>
|
|
<td>
|
|
The number of acquisitions to perform when acquisition is started. This controls
|
|
the number of iterations in the outermost acquisition loop explained above.
|
|
</td>
|
|
<td>
|
|
ROPER_NACQUISITIONS</td>
|
|
<td>
|
|
$(P)$(R)NumAcquisitions<br />
|
|
$(P)$(R)NumAcquisitions_RBV</td>
|
|
<td>
|
|
longout<br />
|
|
longin</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Roper<br />
|
|
NumAcquisitionsCounter</td>
|
|
<td>
|
|
asynInt32</td>
|
|
<td>
|
|
r/o</td>
|
|
<td>
|
|
The number of acquisitions performed so far.
|
|
</td>
|
|
<td>
|
|
ROPER_NACQUISITIONS_COUNTER</td>
|
|
<td>
|
|
$(P)$(R)NumAcquisitionsCounter_RBV</td>
|
|
<td>
|
|
longin</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Roper<br />
|
|
AutoDataType</td>
|
|
<td>
|
|
asynInt32</td>
|
|
<td>
|
|
r/w</td>
|
|
<td>
|
|
A flag controlling whether WinView will automatically chose the optimal data type
|
|
for the image data. 0=No, 1=Yes. If this flag is 1 then the NDDataType parameter
|
|
($(P)$(R)DataType record) is ignored. If this flag is 0 then the NDDataType parameter
|
|
controls the data type of the images.
|
|
</td>
|
|
<td>
|
|
AUTO_DATA_TYPE</td>
|
|
<td>
|
|
$(P)$(R)AutoDataType<br />
|
|
$(P)$(R)AutoDataType_RBV</td>
|
|
<td>
|
|
bo<br />
|
|
bi</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Roper<br />
|
|
ShutterMode</td>
|
|
<td>
|
|
asynInt32</td>
|
|
<td>
|
|
r/w</td>
|
|
<td>
|
|
The shutter operating mode for shutters controlled by WinView. Allowed values are:
|
|
<ul>
|
|
<li>Normal: The detector shutter will be opened and closed normally for each exposure.</li>
|
|
<li>Disabled closed: The shutter will be forced closed. Useful for taking a dark current
|
|
image.</li>
|
|
<li>Disabled open: The shutter will be forced open.</li>
|
|
</ul>
|
|
</td>
|
|
<td>
|
|
ROPER_SHUTTER_MODE</td>
|
|
<td>
|
|
$(P)$(R)RoperShutterMode<br />
|
|
$(P)$(R)RoperShutterMode_RBV</td>
|
|
<td>
|
|
mbbo<br />
|
|
mbbi</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
Roper<br />
|
|
Comment(1-5)</td>
|
|
<td>
|
|
asynOctet</td>
|
|
<td>
|
|
r/w</td>
|
|
<td>
|
|
User comments for the data file. 5 comment fields of 80 characters each are available
|
|
in the header of WinView SPE files. These are waveform records with FTVL=UCHAR and
|
|
NELM=80 so that they can be longer than the 40 character string limit in EPICS.
|
|
</td>
|
|
<td>
|
|
COMMENT(1-5)</td>
|
|
<td>
|
|
$(P)$(R)Comment(1-5)<br />
|
|
$(P)$(R)Comment(1-5)_RBV</td>
|
|
<td>
|
|
waveform<br />
|
|
waveform</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="Unsupported">
|
|
Unsupported standard driver parameters</h2>
|
|
<p>
|
|
The Roper driver does not support the following standard driver parameters:</p>
|
|
<ul>
|
|
<li>Frame type (ADFrameType). This may be supported in a future release to control
|
|
acquisition of flat field and dark current frames.</li>
|
|
<li>Reading previous files (NDReadFile). This may be supported in a future release.</li>
|
|
<li>Capture or stream file saving (NDFileWriteMode, NDFileCapture, NDNumCapture, NDNumCaptured)</li>
|
|
</ul>
|
|
<h2 id="Configuration">
|
|
Configuration</h2>
|
|
<p>
|
|
The Roper driver is created with the roperConfig command, either from C/C++
|
|
or from the EPICS IOC shell.</p>
|
|
<pre>int roperConfig(const char *portName,
|
|
int maxBuffers, size_t maxMemory,
|
|
int priority, int stackSize)
|
|
</pre>
|
|
<p>
|
|
For details on the meaning of the parameters to this function refer to the detailed
|
|
documentation on the roperConfig function in the <a href="areaDetectorDoxygenHTML/roper_8cpp.html">
|
|
roper.cpp documentation</a> and in the documentation for the constructor for the
|
|
<a href="areaDetectorDoxygenHTML/classroper.html">roper class</a>.
|
|
</p>
|
|
<p>
|
|
There an example IOC boot directory and startup script (<a href="roper_st_cmd.html">iocBoot/iocRoper/st.cmd)</a>
|
|
provided with areaDetector.
|
|
</p>
|
|
<h2 id="MEDM_screens" style="text-align: left">
|
|
MEDM screens</h2>
|
|
<p>
|
|
The following show the MEDM screens that are used to control the Roper detector.
|
|
Note that the general purpose screen ADBase.adl can be used, but it exposes a few
|
|
controls that are not applicable to the Roper, and lacks some fields that are important
|
|
for the Roper.</p>
|
|
<p>
|
|
<code>Roper.adl</code> is the main screen used to control the Roper driver.
|
|
</p>
|
|
<div style="text-align: center">
|
|
<h3 style="text-align: center">
|
|
roper.adl</h3>
|
|
<img alt="Roper.png" src="Roper.png" /></div>
|
|
<p>
|
|
<code>RoperFile.adl</code> is the screen used to control WinView file I/O.
|
|
</p>
|
|
<div style="text-align: center">
|
|
<h3 style="text-align: center">
|
|
RoperFile.adl</h3>
|
|
<img alt="RoperFile.png" src="RoperFile.png" /></div>
|
|
<p>
|
|
<code>WinView</code> is program that the Roper driver is controlling via Microsoft
|
|
COM.
|
|
</p>
|
|
<div style="text-align: center">
|
|
<h3 style="text-align: center">
|
|
WinView program from Roper Scientific</h3>
|
|
<img alt="WinView.png" src="WinView.png" /></div>
|
|
<h2 id="Performance_measurements">
|
|
Performance measurements</h2>
|
|
<p>
|
|
The following measurements were done to demonstrate the performance that can be
|
|
obtained with the areaDetector Roper driver. These measurements were made with a
|
|
CoolSnap-HQ2 detector which has 1392x1040 pixels. The acquisition time was 0.01
|
|
second. The overhead per image in the table below is the total time to acquire the
|
|
data set minus 1.00 seconds (the acquisition time) divided by 100. Acquisitions
|
|
were done in 2 modes:</p>
|
|
<ol>
|
|
<li>In the first mode NumImages=100 and NumAcquisitions=1, i.e. the data were all
|
|
collected into a single SPE file. In this mode the time per image is really controlled
|
|
by the acquisition time and readout time. At the end of the acquisition there is
|
|
then a delay, perhaps in copying the data from one buffer to another. The acquisition
|
|
time in this mode is the time from when acquire was started until WinView reported
|
|
acquisition was complete and the write to disk began. The additional time to write
|
|
the file to disk is also listed.</li>
|
|
<li>In the second mode NumImages=1 and NumAcquisitions=100, i.e. the data were collected
|
|
into 100 SPE files. This is equivalent to pressing the Acquire button in WinView
|
|
100 times. There is additional overhead per image that arises from downloading parameters
|
|
to the camera and in creating a new display window in WinView. In this mode the
|
|
test was done both with the EPICS AutoSave PV set to 1 (which effectively does a
|
|
WinView "Save As" operation for each file), and with AutoSave set to 0, which does
|
|
not write disk files at all. The acquisition time listed is with AutoSave on, i.e.
|
|
saving 100 disk files. Interestingly it was generally <i>faster</i> to collect the
|
|
data with AutoSave on than with it off! The time to save the 100 disk files is thus
|
|
actually negative, i.e. it took that much longer to collect the data sets <i>without</i>
|
|
saving the disk files. The reason for this is unclear, but it seems to be something
|
|
internal to WinView.</li>
|
|
</ol>
|
|
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
|
|
<tbody>
|
|
<tr>
|
|
<th>
|
|
Binning</th>
|
|
<th>
|
|
Image dimensions</th>
|
|
<th>
|
|
Image size</th>
|
|
<th>
|
|
Mode</th>
|
|
<th>
|
|
Acquisition time for 100 images</th>
|
|
<th>
|
|
Overhead per image</th>
|
|
<th>
|
|
File size</th>
|
|
<th>
|
|
File saving time</th>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
1x1
|
|
</td>
|
|
<td>
|
|
1392x1040
|
|
</td>
|
|
<td>
|
|
2827 KB
|
|
</td>
|
|
<td>
|
|
1 SPE file
|
|
</td>
|
|
<td>
|
|
29.49</td>
|
|
<td>
|
|
0.28
|
|
</td>
|
|
<td>
|
|
276 MB
|
|
</td>
|
|
<td>
|
|
20.04</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
1x1
|
|
</td>
|
|
<td>
|
|
1392x1040
|
|
</td>
|
|
<td>
|
|
2827 KB
|
|
</td>
|
|
<td>
|
|
100 SPE files
|
|
</td>
|
|
<td>
|
|
80.67</td>
|
|
<td>
|
|
0.79</td>
|
|
<td>
|
|
2.76 MB
|
|
</td>
|
|
<td>
|
|
-3.62</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
2x2</td>
|
|
<td>
|
|
696x520</td>
|
|
<td>
|
|
707 KB
|
|
</td>
|
|
<td>
|
|
1 SPE file
|
|
</td>
|
|
<td>
|
|
10.27</td>
|
|
<td>
|
|
0.09</td>
|
|
<td>
|
|
69 MB
|
|
</td>
|
|
<td>
|
|
4.86</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
2x2</td>
|
|
<td>
|
|
696x520</td>
|
|
<td>
|
|
707 KB
|
|
</td>
|
|
<td>
|
|
100 SPE files
|
|
</td>
|
|
<td>
|
|
46.14</td>
|
|
<td>
|
|
0.45</td>
|
|
<td>
|
|
0.71 MB
|
|
</td>
|
|
<td>
|
|
-.72</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
4x4</td>
|
|
<td>
|
|
348x260</td>
|
|
<td>
|
|
177 KB
|
|
</td>
|
|
<td>
|
|
1 SPE file
|
|
</td>
|
|
<td>
|
|
4.48</td>
|
|
<td>
|
|
0.03</td>
|
|
<td>
|
|
17 MB
|
|
</td>
|
|
<td>
|
|
1.40</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
4x4</td>
|
|
<td>
|
|
348x260</td>
|
|
<td>
|
|
177 KB
|
|
</td>
|
|
<td>
|
|
100 SPE files
|
|
</td>
|
|
<td>
|
|
36.59</td>
|
|
<td>
|
|
0.35</td>
|
|
<td>
|
|
0.18 MB
|
|
</td>
|
|
<td>
|
|
0.69</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="Restrictions">
|
|
Restrictions</h2>
|
|
<p>
|
|
The following are some current restrictions of the Roper driver:</p>
|
|
<ul>
|
|
<li>The are hundreds of parameters that can be controlled in WinView via the COM interface
|
|
for acquiring, processing and displaying images. This driver does not attempt to
|
|
support all of them, just the ones that are most commonly needed for EPICS data
|
|
acquisition and control software. Additional features of WinView are very easy to
|
|
add to the EPICS interface if needed in the future. Settings that EPICS does not
|
|
control and which do not need to be frequently changed can simply be set via the
|
|
WinView GUI.</li>
|
|
<li>When NumImages is greater than one WinView collects a 3-D stack of images. The
|
|
areaDetector driver can save that data to a file using WinView. However, the driver
|
|
callbacks to plugins currently only passes the first image in that stack. It is
|
|
not practical to pass all the images in the stack at once as a 3-d array, because
|
|
this would require allocating a second 3-D array of the same size as the one in
|
|
the WinView buffer. What would be possible is to pass each of the images in the
|
|
stack on after the other. This will be implemented in a future release.</li>
|
|
<li>Reading data files back into WinView is not currently supported. This may be added
|
|
in a future release.</li>
|
|
<li>The values of ADNumImagesCounter ($(P)$(R)NumImagesCounter_RBV) and ADNumExposuresCounter
|
|
($(P)$(R)NumExposuresCounter_RBV) are not updated during acquisition. This is because
|
|
WinView does not appear to be correctly returning the values of the EXP_CSEQUENTS
|
|
and EXP_CACCUMS parameters. The reason for this is under investigation and hopefully
|
|
will be fixed in a future release.</li>
|
|
<li>The driver does not pass callbacks for images in WinView focus mode. I don't currently
|
|
have the required information on how to know when new data is available in focus
|
|
mode and how to read it. Hopefully this will be added in a future release.</li>
|
|
<li>WinView/WinSpec must be version 2.5.22 or later, because the class names changed
|
|
in that release.</li>
|
|
<li>The following items are hardcoded in the driver. They can be changed by recompiling
|
|
if necessary.
|
|
<ul>
|
|
<li>ERROR_MESSAGE_SIZE=256 The maximum size of error messages that can be retrieved
|
|
from WinView.</li>
|
|
<li>ROPER_POLL_TIME=0.01 seconds. The time between polling WinView status to see when
|
|
acquisition is complete.</li>
|
|
</ul>
|
|
</li>
|
|
<li>There is a bug in Windows XP SP2 that causes WinView to hang after about 1600
|
|
acquisitions have been performed in a single WinView session. Acquisition means
|
|
the equivalent of pressing the Acquire button, regardless of how many images were
|
|
collected in a single acquisition. This would typically mean that 1600 SPE files
|
|
had been saved. After 1600 acquisitions it is necessary to exit WinView and restart
|
|
it. This problem is fixed in SP3 for Windows XP, and in Microsoft Vista.</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|