Files
ADAndor/documentation/prosilicaDoc.html
2008-09-18 20:20:18 +00:00

311 lines
8.0 KiB
HTML
Executable File

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>areaDetector Prosilica driver</title>
</head>
<body>
<center>
<h1>
areaDetector Prosilica driver</h1>
<h2>
September 17, 2008</h2>
<h2>
Mark Rivers</h2>
<h2>
University of Chicago</h2>
</center>
<p>
&nbsp;</p>
<center>
<h2>
Contents</h2>
</center>
<ul>
<li><a href="#Overview">Overview</a></li>
<li><a href="#Performance measurements">Performance measurements</a></li>
<li><a href="#Hardware notes">Hardware notes</a></li>
<li><a href="#Restrictions">Restrictions</a></li>
</ul>
<center>
<h2 id="Prosilica Driver">
Prosilica Driver</h2>
</center>
<p>
This is a driver for Gigabit Ethernet and Firewire cameras from <a href="http://www.prosilica.com">
Prosilica</a>. It inherits from ADDriver and implements nearly all of the parameters
in ADStdDriverParams.h. It also implements a number of parameters that are specific
to the Prosilica cameras. The driver is currently only supported under Windows (EPICS
win32-x86 architecture) because the vendor library is provided as a Windows DLL.
The vendor library provided by Prosilica does callbacks to a user-supplied function
each time there is a new frame. Thus, it is not necessary to create a thread for
callbacks in this driver.
</p>
<p>
The vendor library supports saving individual frames as TIFF files, and this is
implemented in the driver. The NDPluginFile plugin can be used to capture or stream
images much more rapidly in the netCDF file format.
</p>
<p>
The driver redefines the choices for 2 of the parameters defined in ADStdDriverParams.h.
The ADTriggerMode choices for the Prosilica are:
</p>
<ul>
<li>Free Run (collects images as fast as allowed by the camera readout and the exposure
time)</li>
<li>Sync In 1 (external trigger on line 1)</li>
<li>Sync In 2 (external trigger on line 2)</li>
<li>Sync In 3 (external trigger on line 3)</li>
<li>Sync In 4 (external trigger on line 4)</li>
<li>Fixed Rate (collects images at a fixed rate)</li>
<li>Software (single software trigger)</li>
</ul>
<p>
The Prosilica supports additional hardware timing signals that may be supported
in a future release.
</p>
<p>
The ADFileFormat choices for the Prosilica are:
</p>
<ul>
<li>TIFF (this is the only format supported)</li>
<li>Invalid (this menu item is defined only because MEDM will not display a menu widget
with only 1 choice)</li></ul>
<p>
The Prosilica driver implements the following parameters in addition to those in
ADStdDriverParams.h:
</p>
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
<tbody>
<tr>
<td align="CENTER" colspan="7,">
<b>Parameter Definitions in prosilica.cpp and EPICS Record Definitions in prosilica.template</b></td>
</tr>
<tr>
<th>
Enum name</th>
<th>
asyn interface</th>
<th>
Access</th>
<th>
Description</th>
<th>
drvUser string</th>
<th>
EPICS record name</th>
<th>
EPICS record type</th>
</tr>
<tr>
<td>
PSReadStatistics</td>
<td>
asynInt32</td>
<td>
r/w</td>
<td>
Read the Gigabit Ethernet statistics when 1</td>
<td>
PS_READ_STATISTICS</td>
<td>
$(P)$(R)PSReadStatistics</td>
<td>
longout</td>
</tr>
<tr>
<td>
PSStatDriverType</td>
<td>
asynOctet</td>
<td>
r/o</td>
<td>
Driver type</td>
<td>
PS_DRIVER_TYPE</td>
<td>
$(P)$(R)PSDriverType_RBV</td>
<td>
stringin</td>
</tr>
<tr>
<td>
PSStatFilterVersion</td>
<td>
asynOctet</td>
<td>
r/o</td>
<td>
Packet filter version</td>
<td>
PS_FILTER_VERSION</td>
<td>
$(P)$(R)PSFilterVersion_RBV</td>
<td>
stringin</td>
</tr>
<tr>
<td>
PSStatFrameRate</td>
<td>
asynFloat64</td>
<td>
r/o</td>
<td>
Frame rate (Hz)</td>
<td>
PS_FRAME_RATE</td>
<td>
$(P)$(R)PSFrameRate_RBV</td>
<td>
ai</td>
</tr>
<tr>
<td>
PSStatFramesCompleted</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of frames completed</td>
<td>
PS_FRAMES_COMPLETED</td>
<td>
$(P)$(R)PSFramesCompleted_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatFramesDropped</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of frames dropped</td>
<td>
PS_FRAMES_DROPPED</td>
<td>
$(P)$(R)PSFramesDropped_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatPacketsErroneous</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of erroneous packets</td>
<td>
PS_PACKETS_ERRONEOUS</td>
<td>
$(P)$(R)PSPacketsErroneous_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatPacketsMissed</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of missed packets</td>
<td>
PS_PACKETS_MISSED</td>
<td>
$(P)$(R)PSPacketsMissed_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatPacketsReceived</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of received packets</td>
<td>
PS_PACKETS_RECEIVED</td>
<td>
$(P)$(R)PSPacketsReceived_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatPacketsRequested</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of packets requested</td>
<td>
PS_PACKETS_RESENT</td>
<td>
$(P)$(R)PSPacketsRequested_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSStatPacketsResent</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of packets resent</td>
<td>
PS_PACKETS_RESENT</td>
<td>
$(P)$(R)PSPacketsResent_RBV</td>
<td>
longin</td>
</tr>
<tr>
<td>
PSBadFrameCounter</td>
<td>
asynInt32</td>
<td>
r/o</td>
<td>
Number of bad frames</td>
<td>
PS_BAD_FRAME_COUNTER</td>
<td>
$(P)$(R)PSBadFrameCounter_RBV</td>
<td>
longin</td>
</tr>
</tbody>
</table>
<p>
The following is the MEDM screen ADBase.adl connected to a Prosilica camera.
</p>
<center>
<img alt="ADBase_prosilica.png" src="ADBase_prosilica.png" /></center>
<p>
The following is the MEDM screen that provides access to the specific parameters
for the Prosilica detector.
</p>
<center>
<img alt="prosilica.png" src="prosilica.png" /></center>
<p>
The following is an IDL epics_ad_display screen (discussed below) illustrating the
Prosilica detector images.
</p>
<center>
<img alt="prosilica_tvscl.png" src="prosilica_tvscl.png" /></center>
</body>
</html>