Project Support


Contexts:Director console or command port
Function:Acquire sequential raw frames and deliver them to the video server
Required Parameters:none.
Optional Parameters:
nframes=[16] Number of raw frames/cycles
etime=*[0.005] Seconds of integration time per frame
intstart=*[0.005] Seconds after end of readout to start integration
width=[det-dependent] Width (columns) of readout per output
height=[det-dependent] Height (rows) of readout per output
videodest=[from-config] Video server destination IP, port, and feed name
keep=*[TRUE] If FALSE, read frame but discard the data
shutter=*[FALSE] If TRUE, SHUTTER TTL output goes high at intstart, and low at end of etime.
mod=Number of cycles after which to repeat pattern (must be < nframes)
ncpus=[2] The default enables multi-threaded operation for best performance. "1" disables.

Frame-based options

(*) Options etime= intstart= dreg= and keep= take optional extensions to change to a new value on a given frame number. For example, to perform on reset and then readouts after:


Without whitespace a comma, a frame number, a colon, and new value.


The nframes option actually specifies the number of video "cycles" to complete. The video cycle goes in this order:

  • Program dreg
  • Perform a readout (possibly with integration starting during readout in low gain mode if intstart is negative.)
  • Integrate

During the integration phase, the device's master clock is currently not operated. (This appears not to cause any adverse effects.)

The integration ends at the start of cycle n+1. The first cycle may also often request a "reset" rather than a readout for IR devices. For these reasons, nframes is often 1 or 2 greater than the actual number of desired video frames. (See the "keep" option for syntax to throw away data produced by these initial cycles.)


The exposure time is specified in seconds. As of this writing, the controller pays attention to up to 3 decimal places (milliseconds) but a future upgrade will increase the precision to microseconds.


For devices with an electronic shutter, a time in seconds after the readout ends can be specified as the "start of integration." If it is desired to have integration overlap with readout, a negative number of seconds can be used (up to but not greater than the readout time, and also never greater than the etime.) No attempt is made to enforce the validity of integration during readout based on dreg.

width, height

These parameters default to the full (per output) detector size. If a window readout mode has been selected (see dreg) then width and height should be adjusted accordingly.


When keep=false is used, no data will be transmitted. This is useful for a reset frame which should be discarded, or pipelined data which does not need to be kept. The default is keep=false. This option can be changed on a given frame (cycle) number using the extended syntax described under Frame-based options above.


Depending on the application, a the shutter output could drive a real physical shutter, or could be connected to GPS timestamping hardware. The controller records its own high precision timestamps, but at least one external timestamp should be recorded to relate these to an absolute time. Use "shutter=true" to trigger on all cycles. Use "shutter=<same-value-as-keep>" to trigger the shutter signal only on those frames which will be passed along to grasp_vidgrab.

Suppose two "reset" readouts were requested followed by a number of non-destructive readouts (IR). And suppose only one shutter signal was required, on the first real readout. This would be cycle 3, so the syntax for the single trigger would be:

video ... shutter=false,3:true,4:false

Note that if the "mod=" option is used, it applies to all cycle-based options including shutter=, so another shutter signal would occur every "mod" frames in that case.


All of the frame based options can be set to repeat on a given number of cycles. For example, if "mod=5" is given, the 6th cycle will operate with the settings that were applied to the first cycle.


This option sets a device-specific data register. It can also be set to change on any cycle, but options which affect width and height (windowing) should remain the same.