Using absolute value registers to convert camera property values to real-world units in FlyCapture 1.0 SDK.

Last Revision Date: 1/30/2015

Many of our IEEE-1394 cameras implement "absolute value" modes for various camera settings. This article describes how to use the absolute value CSRs to determine real-world values, such as Shutter times in seconds (s) and Gain values in decibels (dB). 

Using the absolute values contained in the ABS_VAL camera registers is easier and more efficient than applying complex conversion formulas to the information in the Value field of the associated Control and Status Register (CSR). In addition, conversion formulas can change between firmware versions. Therefore, we recommend using the absolute value registers to determine camera values.

Absolute Value CSRs

Detailed information regarding the ABS_VAL register offsets and definitions can be located in the "Absolute Value CSR Registers" section of the Digital Cameras Register Reference.

Interpreting Absolute Value CSR Values

The Absolute Value CSRs store 32-bit floating-point values with IEEE/REAL*4 format. To programmatically determine the floating point equivalent of the hexadecimal Value for the ABS_VAL_SHUTTER register:

// declare a union of a floating point and unsigned long 
typedef union _AbsValueConversion

   unsigned long ulValue;
   float fValue;
} AbsValueConversion;

float fShutter;
AbsValueConversion regValue;

// read the 32-bit hex value into the unsigned long member
flycaptureGetCameraRegister(context, 0x918, & regValue.ulValue ); 
fShutter = regValue.fValue;

Accessing Absolute Values with FlyCapture

The FlyCapture API provides function calls for getting and setting absolute values, including:

    • flycaptureGetCameraAbsPropertyRange()
    • flycaptureGetCameraAbsPropertyEx()
    • flycaptureSetCameraAbsPropertyEx()