git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@7710 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
322 lines
8.3 KiB
HTML
Executable File
322 lines
8.3 KiB
HTML
Executable File
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>areaDetector Prosilica driver</title>
|
|
</head>
|
|
<body>
|
|
<div style="text-align: center">
|
|
<h1>
|
|
areaDetector Prosilica driver</h1>
|
|
<h2>
|
|
September 20, 2008</h2>
|
|
<h2>
|
|
Mark Rivers</h2>
|
|
<h2>
|
|
University of Chicago</h2>
|
|
</div>
|
|
<h2>
|
|
Contents</h2>
|
|
<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>
|
|
<li><a href="#Future">Future enhancements</a></li>
|
|
</ul>
|
|
<h2 id="Prosilica Driver">
|
|
Prosilica Driver</h2>
|
|
<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, the driver does not need to create a thread
|
|
itself for callbacks.
|
|
</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_REQUESTED</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>
|
|
<div style="text-align: center">
|
|
<h3>
|
|
ADBase.adl</h3>
|
|
<img alt="ADBase_prosilica.png" src="ADBase_prosilica.png" /></div>
|
|
<p>
|
|
The following is the MEDM screen that provides access to the specific parameters
|
|
for the Prosilica detector.
|
|
</p>
|
|
<div style="text-align: center">
|
|
<h3>
|
|
prosilica.adl</h3>
|
|
<img alt="prosilica.png" src="prosilica.png" /></div>
|
|
<p>
|
|
The following is an IDL <a href="http://cars.uchicago.edu/software/idl/imaging_routines.html#epics_ad_display">
|
|
epics_ad_display</a> screen displaying the Prosilica detector images.
|
|
</p>
|
|
<div style="text-align: center">
|
|
<h3>
|
|
epics_ad_display.pro</h3>
|
|
<img alt="prosilica_tvscl.jpg" src="prosilica_tvscl.jpg" /></div>
|
|
<h2 id="Future">
|
|
Future enhancements</h2>
|
|
<p>
|
|
The driver does not currently support color. This will be added in the near future.
|
|
</p>
|
|
<p>
|
|
Work is needed on connection management. If the camera is unplugged or powered off
|
|
which the areaDetector driver is running it does not gracefully recover.
|
|
</p>
|
|
</body>
|
|
</html>
|