TSI Camera API Manual Application Programming Interface Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 31

DownloadTSI Camera API Manual Application Programming Interface Guide
Open PDF In BrowserView PDF
Application Programming
Interface (API)

TSI Camera SDK

Chapter 1: Description

Table of Contents
Chapter 1

Description ........................................................................................................................... 4

1.1. TSI Camera SDK .............................................................................................................. 4
1.1.1. Imaging Concepts ................................................................................................................. 4

Chapter 2

C++ API ................................................................................................................................. 5

2.1. Enumerations .................................................................................................................. 5
2.1.1. TS_ATTR_ID ......................................................................................................................... 5
2.1.2. TSI_DATA_TYPE .................................................................................................................. 5
2.1.3. TSI_PARAM_FLAGS ............................................................................................................ 5
2.1.4. TSI_CAMERA_STATUS ....................................................................................................... 6
2.1.5. TSI_ERROR_CODE ............................................................................................................. 6
2.1.6. TSI_ACQ_STATUS_ID ......................................................................................................... 7
2.1.7. TSI_CAMERA_CONTROL_EVENT_ID ................................................................................ 7
2.1.8. TSI_IMAGE_NOTIFICATION_EVENT_ID ............................................................................ 7
2.1.9. TSI_PARAM_ID .................................................................................................................... 7
2.1.10.TSI_IMAGE_MODE .............................................................................................................. 9
2.1.11.TSI_HW_TRIG_SOURCE..................................................................................................... 9
2.1.12.TSI_HW_TRIG_POLARITY .................................................................................................. 9
2.1.13.TSI_OP_MODE ..................................................................................................................... 9
2.1.14.TSI_EXPOSURE_UNITS .................................................................................................... 10
2.1.15.TSI_ADDRESS_SELECT ................................................................................................... 10

2.2. Data Types ..................................................................................................................... 10
2.2.1.
2.2.2.
2.2.3.
2.2.4.
2.2.5.
2.2.6.

TSI_ROI_BIN ...................................................................................................................... 10
TSI_FUNCTION_CAMERA_CONTROL_INFO .................................................................. 10
TSI_FUNCTION_CAMERA_CONTROL_CALLBACK ........................................................ 11
TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX ................................................. 11
TSI_FUNCTION_IMAGE_NOTIFICATION_CALLBACK .................................................... 11
TSI_FUNCTION_IMAGE_CALLBACK ............................................................................... 11

2.3. TsiSdk Class .................................................................................................................. 11
2.3.1. Constructor / Destructor ...................................................................................................... 11
2.3.2. Methods............................................................................................................................... 12
TsiSdk::Open _____________________________________________________________12
TsiSdk::Close _____________________________________________________________12
TsiSdk::GetNumberOfCameras _______________________________________________12
TsiSdk::GetCamera ________________________________________________________12
TsiSdk::GetCameraInterfaceTypeStr ___________________________________________13
TsiSdk::GetCameraAddressStr _______________________________________________13
TsiSdk::GetCameraName ___________________________________________________13
TsiSdk::ElapsedTime _______________________________________________________13
TsiSdk::GetLastErrorStr _____________________________________________________13
TsiSdk::GetErrorCode ______________________________________________________14
TsiSdk::ClearError _________________________________________________________14
TsiSdk::GetErrorString ______________________________________________________14
TsiSdk::GetUtilityObject _____________________________________________________14

2.4. TsiCamera Class ........................................................................................................... 15
2.4.1. METHODS .......................................................................................................................... 15
TsiCamera::Open__________________________________________________________15
TsiCamera::Close _________________________________________________________15
TsiCamera::Status _________________________________________________________15
TsiCamera::GetCameraName ________________________________________________16
TsiCamera::SetCameraName ________________________________________________16
ITN000195-D02 Rev. A June 12, 2014

Page 2

TSI Camera SDK

Chapter 1: Description

TsiCamera::GetParameter ___________________________________________________16
TsiCamera::GetDataTypeSize ________________________________________________16
TsiCamera::SetTextCommand _______________________________________________17
TsiCamera::SetTextCallback _________________________________________________17
TsiCamera::SetParameter ___________________________________________________17
TsiCamera:: SetCameraControlCallback ________________________________________17
TsiCamera:: SetCameraControlCallbackEx ______________________________________18
The TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX type definition above describes
the function header for the callback function._____________________________________18
TsiCamera:: SetImageNotificationCallback ______________________________________18
TsiCamera:: SetImageCallback _______________________________________________19
TsiCamera::ResetCamera ___________________________________________________19
TsiCamera::FreeImage _____________________________________________________19
TsiCamera::FreeAllPendingImages ____________________________________________19
TsiCamera::GetPendingImage _______________________________________________20
TsiCamera::GetLastPendingImage ____________________________________________20
TsiCamera::StartAndWait ___________________________________________________20
TsiCamera::Start __________________________________________________________20
TsiCamera::Stop __________________________________________________________21
TsiCamera::GetAcquisitionStatus _____________________________________________21
TsiCamera::GetExposeCount ________________________________________________21
TsiCamera::GetFrameCount _________________________________________________21
TsiCamera::WaitForImage ___________________________________________________22
TsiCamera::ResetExposure __________________________________________________22
TsiCamera::GetErrorCode ___________________________________________________22
TsiCamera::ClearError ______________________________________________________22
TsiCamera::GetErrorStr _____________________________________________________23
TsiCamera::GetLastErrorStr _________________________________________________23
2.4.2. List of Camera Parameters ................................................................................................. 24

2.5. TsiImage Class .............................................................................................................. 28
2.5.1. DATA MEMBERS ............................................................................................................... 28
2.5.2. METHODS .......................................................................................................................... 28
TsiImage::Copy ___________________________________________________________28
TsiImage::Clone ___________________________________________________________29

2.6. TsiUtil Class ................................................................................................................... 29
2.6.1. METHODS .......................................................................................................................... 29
TsiUtil:WriteImageToTIFF ___________________________________________________29
TsiUtil:WriteImageToPNG ___________________________________________________29

Chapter 3

Thorlabs Worldwide Contacts ..........................................................................................30

ITN000195-D02 Rev. A June 12, 2014

Page 3

TSI Camera SDK

Chapter 1
1.1.

Chapter 1: Description

Description

TSI Camera SDK

The TSI Imaging SDK consists of Libraries, Drivers, Documentation, and Examples that make it easy to
incorporate a TSI camera into your system.

1.1.1. Imaging Concepts
Basic steps to get image from camera:
1) TsiSDK *sdk = get_tsi_sdk(0); //Obtain a reference to the sdk using the static function
2) bool success = sdk->Open(); //Open the SDK
3) int numCameras = sdk->GetNumberOfCameras(); //Get the number of available cameras
4) TsiCamera *cam = sdk->GetCamera(0..numCameras-1); //Get a reference to a camera
a. cam->Open(); //Open the camera
b. Register for desired events (ImageNotification, ControlCallback, etc)
c.

Set/Get desired camera parameters

d. cam->Start();
e. Acquire images (see step 5)
f.

cam->Stop();

5) Access the TsiImage from the appropriate callback and use the pointer to the data.
a. TsiImage *image = cam->GetPendingImage(); //Call GetPendingImage in Notify Callback
i. Alternatively, just receive the image in the parameters of Image Callback
ii. Make sure image pointer isn’t null
iii. Check error codes in callbacks as necessary
b. Remember to call cam->FreeImage(image); ASAP to clear the buffer for incoming images
6) cam->Close(); //Close the camera when you are done
7) sdk->Close(); //Close the SDK when done
8) release_tsi_sdk(sdk); //Release the resources used by the SDK

ITN000195-D02 Rev. A June 12, 2014

Page 4

TSI Camera SDK

Chapter 2
2.1.

Chapter 2: C++ API

C++ API

Enumerations

2.1.1. TS_ATTR_ID
typedef enum _TSI_ATTR_ID
{
TSI_ATTR_NAME,
TSI_ATTR_DATA_TYPE,
TSI_ATTR_ARRAY_COUNT,
TSI_ATTR_FLAGS,
TSI_ATTR_MIN_VALUE,
TSI_ATTR_MAX_VALUE,
TSI_ATTR_DEFAULT_VALUE,
TSI_MAX_ATTR
} TSI_ATTR_ID, *PTSI_ATTR_ID;

2.1.2. TSI_DATA_TYPE
typedef enum _TSI_DATA_TYPE
{
TSI_TYPE_NONE,
TSI_TYPE_UNS8,
TSI_TYPE_UNS16,
TSI_TYPE_UNS32,
TSI_TYPE_UNS64,
TSI_TYPE_INT8,
TSI_TYPE_INT16,
TSI_TYPE_INT32,
TSI_TYPE_INT64,
TSI_TYPE_TEXT,
TSI_TYPE_FP,
TSI_MAX_TYPES
} TSI_DATA_TYPE;

2.1.3. TSI_PARAM_FLAGS
typedef enum _TSI_PARAM_FLAGS
{
TSI_FLAG_READ_ONLY
TSI_FLAG_WRITE_ONLY
TSI_FLAG_UNSUPPORTED
TSI_FLAG_VALUE_CHANGED

=
=
=
=

0x00000001,
0x00000002,
0x00000004,
0x00000008

} TSI_PARAM_FLAGS;

ITN000195-D02 Rev. A June 12, 2014

Page 5

TSI Camera SDK

Chapter 2: C++ API

2.1.4. TSI_CAMERA_STATUS
typedef enum _TSI_CAMERA_STATUS
{
TSI_STATUS_CLOSED,
TSI_STATUS_OPEN,
TSI_STATUS_BUSY,
TSI_STATUS_MAX
} TSI_CAMERA_STATUS;

2.1.5. TSI_ERROR_CODE
typedef enum _TSI_ERROR_CODE
{
TSI_NO_ERROR,
TSI_ERROR_UNKNOWN,
TSI_ERROR_UNSUPPORTED,
TSI_ERROR_PARAMETER_UNSUPPORTED,
TSI_ERROR_ATTRIBUTE_UNSUPPORTED,
TSI_ERROR_INVALID_ROI,
TSI_ERROR_INVALID_BINNING,
TSI_ERROR_INVALID_PARAMETER_UNDERFLOW,
TSI_ERROR INVALID_PARAMETER_OVERFLOW,
TSI_ERROR_CAMERA_COMM_FAILURE,
TSI_ERROR_CAMERA_INVALID_DATA,
TSI_ERROR_NULL_POINTER_SUPPLIED,
TSI_CAMERA_INVALID_DATA_SIZE_OR_TYPE,
TSI_MAX_ERROR
} TSI_ERROR_CODE, *PTSI_ERROR_CODE;

ITN000195-D02 Rev. A June 12, 2014

Page 6

TSI Camera SDK

Chapter 2: C++ API

2.1.6. TSI_ACQ_STATUS_ID
typedef enum _TSI_ACQ_STATUS_ID
{
TSI_ACQ_STATUS_IDLE,
TSI_ACQ_STATUS_WAITING_FOR_TRIGGER,
TSI_ACQ_STATUS_EXPOSING,
TSI_ACQ_STATUS_READING_OUT,
TSI_ACQ_STATUS_DONE,
TSI_ACQ_STATUS_ERROR,
TSI_ACQ_STATUS_TIMEOUT,
TSI_MAX_ACQ_STATUS_ID
} TSI_ACQ_STATUS_ID;

2.1.7. TSI_CAMERA_CONTROL_EVENT_ID
typedef enum _TSI_CAMERA_CONTROL_EVENT_ID
{
TSI_CAMERA_CONTROL_EXPOSURE_START
,
TSI_CAMERA_CONTROL_EXPOSURE_COMPLETE ,
TSI_CAMERA_CONTROL_SEQUENCE_START
,
TSI_CAMERA_CONTROL_SEQUENCE_COMPLETE ,
TSI_CAMERA_CONTROL_READOUT_START
,
TSI_CAMERA_CONTROL_READOUT_COMPLETE ,
TSI_MAX_CAMERA_CONTROL_EVENT_ID
} TSI_CAMERA_CONTROL_EVENT_ID;

2.1.8. TSI_IMAGE_NOTIFICATION_EVENT_ID
typedef enum _TSI_IMAGE_NOTIFICATION_EVENT_ID
{
TSI_IMAGE_NOTIFICATION_PENDING_IMAGE,
TSI_IMAGE_NOTIFICATION_ACQUISITION_ERROR,
TSI_MAX_IMAGE_NOTIFICATION_EVENT_ID
} TSI_IMAGE_NOTIFICATION_EVENT_ID;

2.1.9.

TSI_PARAM_ID
typedef enum _TSI_PARAM_ID
{
TSI_PARAM_CMD_ID_ATTR_ID
TSI_PARAM_ATTR
TSI_PARAM_PROTOCOL
TSI_PARAM_FW_VER

ITN000195-D02 Rev. A June 12, 2014

,
,
,
,
Page 7

TSI Camera SDK

Chapter 2: C++ API

TSI_PARAM_HW_VER
,
TSI_PARAM_HW_MODEL
,
TSI_PARAM_HW_SER_NUM
,
TSI_PARAM_CAMSTATE
,
TSI_PARAM_CAM_EXPOSURE_STATE
,
TSI_PARAM_CAM_TRIGGER_STATE
,
TSI_PARAM_EXPOSURE_UNIT
,
TSI_PARAM_EXPOSURE_TIME
,
TSI_PARAM_ACTUAL_EXPOSURE_TIME ,
TSI_PARAM_HSIZE
,
TSI_PARAM_VSIZE
,
TSI_PARAM_ROI_BIN
,
TSI_PARAM_FRAME_COUNT
,
TSI_PARAM_CURRENT_FRAME
,
TSI_PARAM_OP_MODE
,
TSI_PARAM_CDS_GAIN_INDEX
,
TSI_PARAM_CDS_GAIN = TSI_PARAM_CDS_GAIN_INDEX,
TSI_PARAM_VGA_GAIN
,
TSI_PARAM_GAIN
,
TSI_PARAM_OPTICAL_BLACK_LEVEL ,
TSI_PARAM_PIXEL_OFFSET
,
TSI_PARAM_READOUT_SPEED_INDEX ,
TSI_PARAM_READOUT_SPEED
,
TSI_PARAM_FRAME_TIME
,
TSI_PARAM_FRAME_RATE
,
TSI_PARAM_COOLING_MODE
,
TSI_PARAM_COOLING_SETPOINT
,
TSI_PARAM_TEMPERATURE
,
TSI_PARAM_QX_OPTION_MODE
,
TSI_PARAM_TURBO_MODE
,
TSI_PARAM_TURBO_CODE_MODE = TSI_PARAM_TURBO_MODE,
TSI_PARAM_XORIGIN
,
TSI_PARAM_YORIGIN
,
TSI_PARAM_XPIXELS
,
TSI_PARAM_YPIXELS
,
TSI_PARAM_XBIN
,
TSI_PARAM_YBIN
,
TSI_PARAM_IMAGE_ACQUISTION_MODE,
TSI_PARAM_NAMED_VALUE
,
TSI_PARAM_TAPS_INDEX
,
TSI_PARAM_TAPS_VALUE
,
TSI_PARAM_RESERVED_1
,
TSI_PARAM_RESERVED_2
,
TSI_PARAM_RESERVED_3
,
TSI_PARAM_RESERVED_4
,
TSI_PARAM_GLOBAL_CAMERA_NAME
,
TSI_PARAM_CDS_GAIN_VALUE
,
TSI_PARAM_PIXEL_SIZE
,
TSI_PARAM_BITS_PER_PIXEL
,
TSI_PARAM_BYTES_PER_PIXEL
,
TSI_PARAM_READOUT_TIME
,
TSI_PARAM_HW_TRIGGER_ACTIVE
,
TSI_PARAM_HW_TRIG_SOURCE
,
TSI_PARAM_HW_TRIG_POLARITY
,
TSI_PARAM_TAP_BALANCE_ENABLE
,

ITN000195-D02 Rev. A June 12, 2014

Page 8

TSI Camera SDK

Chapter 2: C++ API

TSI_MAX_PARAMS
} TSI_PARAM_ID;

2.1.10. TSI_IMAGE_MODE
typedef enum _TSI_IMAGE_MODES
{
TSI_IMAGE_MODE_ALLOCATE ,
TSI_IMAGE_MODE_STREAM
,
TSI_IMAGE_MODE_TRIGGER ,
TSI_MAX_IMAGE_MODES
} TSI_IMAGE_ACQUISTION_MODES;

2.1.11. TSI_HW_TRIG_SOURCE
typedef enum _TSI_HW_TRIG_SOURCE
{
TSI_HW_TRIG_OFF,
TSI_HW_TRIG_AUX,
TSI_HW_TRIG_CL,
TSI_HW_TRIG_MAX
} TSI_HW_TRIG_SOURCE, *PTSI_HW_TRIG_SOURCE;

2.1.12. TSI_HW_TRIG_POLARITY
typedef enum _TSI_HW_TRIG_POLARITY
{
TSI_HW_TRIG_ACTIVE_HIGH,
TSI_HW_TRIG_ACTIVE_LOW,
TSI_HW_TRIG_POL_MAX
} TSI_HW_TRIG_POLARITY, *PTSI_HW_TRIG_POLARITY;

2.1.13. TSI_OP_MODE
typedef enum _TSI_OP_MODE
{
TSI_OP_MODE_NORMAL,
TSI_OP_MODE_PDX,
TSI_OP_MODE_TOE,
TSI_OP_MODE_RESERVED_1,
} TSI_OP_MODE, *PTSI_OP_MODE;

ITN000195-D02 Rev. A June 12, 2014

Page 9

TSI Camera SDK

Chapter 2: C++ API

2.1.14. TSI_EXPOSURE_UNITS
typedef enum _TSI_EXPOSURE_UNITS
{
TSI_EXP_UNIT_MICROSECONDS,
TSI_EXP_UNIT_MILLISECONDS,
TSI_EXP_UNIT_MAX
} TSI_EXPOSURE_UNITS, *PTSI_EXPOSURE_UNITS;

2.1.15. TSI_ADDRESS_SELECT
typedef enum _TSI_ADDRESS_SELECT
{
TSI_ADDRESS_SELECT_IP,
TSI_ADDRESS_SELECT_MAC,
TSI_ADDRESS_SELECT_ADAPTER_ID,
TSI_ADDRESS_SELECT_MAX
} TSI_ADDRESS_SELECT;

2.2.

Data Types

2.2.1. TSI_ROI_BIN

typedef struct _TSI_ROI_BIN {
UNS32
UNS32
UNS32
UNS32

XOrigin;
YOrigin;
XPixels;
YPixels;

UNS32 XBin;
UNS32 YBin;

//
//
//
//

X Origin in sensor array
Y Origin in sensor array
Frame width in pixels
Frame height in pixels

// Binning factor in the X dimension
// Binning factor in the Y dimension

} TSI_ROI_BIN, *PTSI_ROI_BIN;

2.2.2. TSI_FUNCTION_CAMERA_CONTROL_INFO
typedef struct _TSI_FUNCTION_CAMERA_CONTROL_INFO {
uint32_t FrameNumber;
struct {
uint32_t
uint32_t
uint32_t
uint32_t
uint32_t

Year;
Month;
Day;
Hour;
Min;

ITN000195-D02 Rev. A June 12, 2014

Page 10

TSI Camera SDK

Chapter 2: C++ API

uint32_t Sec;
uint32_t MS;
uint32_t US;
} TimeStamp;
} TSI_FUNCTION_CAMERA_CONTROL_INFO,
*PTSI_FUNCTION_CAMERA_CONTROL_INFO;

2.2.3. TSI_FUNCTION_CAMERA_CONTROL_CALLBACK
typedef void (*TSI_FUNCTION_CAMERA_CONTROL_CALLBACK)
(int ctl_event,
void *context);

2.2.4. TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX
typedef void (*TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX )
(int ctl_event,
TSI_FUNCTION_CAMERA_CONTROL_INFO
*ctl_event_info, void *context);

2.2.5. TSI_FUNCTION_IMAGE_NOTIFICATION_CALLBACK
typedef void (*TSI_FUNCTION_IMAGE_NOTIFICATION_CALLBACK)
(int notification,
void *context);

2.2.6. TSI_FUNCTION_IMAGE_CALLBACK
typedef void (*TSI_FUNCTION_IMAGE_CALLBACK)
(TsiImage *tsi_image, void *context);

2.3.

TsiSdk Class

This class provides a framework for all the other classes in the API to exist within.
Instantiating an object of this type and then calling the OpenSDK method instructs the API to examine your
system, searching for and building a list of cameras that it finds.
The CloseSDK (coupled with a subsequent call to OpenSDK) can be used to handle instances where the list of
cameras changes dynamically.
The destructor for the TsiSdk class will first close and delete any camera objects that were allocated, and then
close and clean up the SDK.

2.3.1. Constructor / Destructor
The constructor for the TsiSDK class initializes the library but does not actually build a list of cameras – this
functionality is implemented in the OpenSDK method so that the TsiSdk class does not have to be deleted and
recreated when the list of cameras changes.

ITN000195-D02 Rev. A June 12, 2014

Page 11

TSI Camera SDK

Chapter 2: C++ API

The destructor for this class contains an implicit call to the CloseSDK (see below) method.

2.3.2. Methods
TsiSdk::Open

bool Open();

This method must be called before any other

TsiSdk::Close

bool Close();

This method iterates over the list of cameras, first closing any cameras that have been left open, then
deleting their objects. After calling this method (or destructing an object of type TsiSdk), make sure your
program does not access any TsiCamera objects.

TsiSdk::GetNumberOfCameras

int GetNumberOfCameras ();

This method is used after the OpenSDK method to get a count of the number of cameras the OpenSDK
method found.

TsiSdk::GetCamera

TsiCamera* GetCamera (int CameraNumber);

This method fails if the value returned is NULL.
Otherwise, the pointer returned is to a camera object of type TsiCamera. See TsiCamera class definition
below for more details.

ITN000195-D02 Rev. A June 12, 2014

Page 12

TSI Camera SDK

Chapter 2: C++ API

TsiSdk::GetCameraInterfaceTypeStr

char* GetCameraInterfaceTypeStr (int camera_number );

This method returns a string describing the interface type of the camera.
TsiSdk::GetCameraAddressStr

char* GetCameraAddressStr (int camera_number,
TSI_ADDRESS_SELECT address_select );

This method returns the specified address type for a specified camera.

TsiSdk::GetCameraName

char* GetCameraName (int camera_number );

This method returns a string with the name of the selected camera.

TsiSdk::ElapsedTime

uint64 ElapsedTime (uint64 StartTime);

This method provides a convenient way to calculate the elapsed time in milliseconds between successive
calls to this method.
Calling this method with a start time of zero establishes the start time. Calling the method again, using
the results of the first call will result in the elapsed time in millisconds between those calls being returned.

TsiSdk::GetLastErrorStr

ITN000195-D02 Rev. A June 12, 2014

Page 13

TSI Camera SDK

Chapter 2: C++ API

char* GetLastErrorStr();

Returns the string describing the last error.

TsiSdk::GetErrorCode

TSI_ERROR_CODE GetErrorCode();

Returns the current error code for the SDK, a returned value of zero indicates success. Clears any nonzero error code.

TsiSdk::ClearError

bool ClearError ();

Clears any existing error code for the SDK without having to read it using GetErrorCode.

TsiSdk::GetErrorString

bool GetErrorString(TSI_ERROR_CODE ErrorCode, char
*StringBuffer, int &StringLength)

Returns the non-localized ASCII string description of the supplied error code.
Passing a NULL pointer and pointer to a variable containing a length of zero length results in the length of
the string associated with the supplied error code being returned so that a buffer of appropriate length can
be dynamically allocated.

TsiSdk::GetUtilityObject

TsiUtil* GetUtilityObject ();

ITN000195-D02 Rev. A June 12, 2014

Page 14

TSI Camera SDK

Chapter 2: C++ API

Returns a pointer to an instance of TsiUtil which has some functions for saving out 16-bit tif and png
image formats.

2.4.

TsiCamera Class

Objects of this class are used to control and acquire data from the cameras in your system. You cannot simply
instantiate an object of this type. Instead, instantiate an object of the TsiSdk class, call the OpenSDK method,
and then use the GetCamera method in that class to get a pointer to an object of this type.

2.4.1. METHODS
TsiCamera::Open

bool Open ();

Opens this camera for subsequent communications. The reason for opening and closing cameras is to
conserve resources for cameras that have been enumerated, but are not currently in use.
This method must be called (once) before any other methods other than GetCameraName can be used.

TsiCamera::Close

bool Close ();

This method is called implicitly by the TsiSdk method CloseSDK and it’s destructor, but one can call this
method directly to close the camera to conserve resources when a camera is not needed.

TsiCamera::Status

bool Status (TSI_CAMERA_STATUS *CameraStatus);

This method returns the current status of the camera (see the definition of TSI_CAMERA_STATUS
above). The intent of this method is to return the overall state of the camera (open, closed, busy, etc.).
For the status of an acquisition, use the GetStatus method of the TsiAcquistion object below.

ITN000195-D02 Rev. A June 12, 2014

Page 15

TSI Camera SDK

Chapter 2: C++ API

TsiCamera::GetCameraName

char* GetCameraName ();

This function returns a pointer to the camera name. If no name has been previously assigned to the
camera, a generic camera name will be returned.

TsiCamera::SetCameraName

bool SetCameraName (char *CameraName);

This function allows the caller to give the camera a user generated name. This function is intended for
use in multi-camera systems where the user may want to assign a name to a particular camera that may
have a particular function or be connected to a particular part of their system. This name is persistant
and is tied to the model and serial number of the camera.
TsiCamera::GetParameter

bool GetParameter (TSI_PARAM_ID ParameterID, size_t Length, void
*data);

This method is the main way of querying the various camera parameters, discovering whether a particular
setting is supported on a camera, and other attributes about the parameter, such as it’s data type, length
(in the case of vector or array type), and any other flags the parameter might have.
To use this method, you must supply a parameter identifier (see TSI_PARAMETER_ID as defined
above), the size of the variable to hold the data, and a pointer to the variable to hold the data returned.
Attributes about the parameter, with the exception of the minimum and maximum values a parameter
may have all have fixed sizes. The actual value, the min and the max values will all have the same type,
and that type can be discovered by using the TSI_ATTR_DATA_TYPE attribute identifier. The value
retuned will be a TSI_DATA_TYPE enumerated type, The GetDataTypeSize method can be used to
determine the scalar size for the type. The total storage required for a parameter will be the size for the
data type multiplied by the value returned by TSI_ATTR_DATA_COUNT attribute id.

TsiCamera::GetDataTypeSize

ITN000195-D02 Rev. A June 12, 2014

Page 16

TSI Camera SDK

Chapter 2: C++ API

int32 GetDataTypeSize (TSI_DATA_TYPE DataType);

This method returns the size in bytes of any of the SDK defined data types.

TsiCamera::SetTextCommand

bool SetTextCommand (char *str);

This method sends a serial text command directly to the camera.

TsiCamera::SetTextCallback

bool SetTextCommand (TSI_TEXT_CALLBACK_FUNCTION func, void
*context);

Using this method, you can register for a callback to receive serial text responses to serial text commands
issued via SetTextCommand(char *str).

TsiCamera::SetParameter

bool SetParameter (TSI_PARAM_ID ParameterID, void *data);

This method is a sister function to the GetParameter function described above and is used to set any
parameter that is does not have the TSI_FLAG_READ_ONLY flag set.
A parameter’s setting may be cached (unless the API determines it’s value is volatile and must be sent to
the camera each time, even if the value does not actually change). This is used to cut down on
unnecessary traffic to / from the camera.

TsiCamera:: SetCameraControlCallback

bool SetCameraControlCallback (
ITN000195-D02 Rev. A June 12, 2014

Page 17

TSI Camera SDK

TSI_FUNCTION_CAMERA_CONTROL_CALLBACK
void *
);

Chapter 2: C++ API

func,
context

This method allows the caller to specify a callback function for interesting events about the camera.
See the TSI_CAMERA_CONTROL_EVENT_ID enumeration above for the supported list of events.
The TSI_FUNCTION_CAMERA_CONTROL_CALLBACK type definition above describes the function
header for the callback function.

TsiCamera:: SetCameraControlCallbackEx

bool SetCameraControlCallbackEx (
TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX
func,
void *
context
);

This method allows the caller to specify a callback function for interesting events about the camera.
See the TSI_CAMERA_CONTROL_EVENT_ID enumeration above for the supported list of events.
The TSI_FUNCTION_CAMERA_CONTROL_CALLBACK_EX type definition above describes the
function header for the callback function.

TsiCamera:: SetImageNotificationCallback

bool SetImageNotificationCallback (
TSI_FUNCTION_IMAGE_NOTIFICATION_CALLBACK func,
Void *
context
);

Using this method, you can register callbacks for events such as cameras being unplugged or other
asynchronous events occurring on the camera.
See the TSI_IMAGE_NOTIFICATION_EVENT_ID enumeration above for the supported list of events.
The TSI_FUNCTION_IMAGE_NOTIFICATION_CALLBACK type definition above describes the function
header for the callback function.

ITN000195-D02 Rev. A June 12, 2014

Page 18

TSI Camera SDK

Chapter 2: C++ API

TsiCamera:: SetImageCallback

bool SetImageCallback (
TSI_FUNCTION_IMAGE_CALLBACK
Void *
);

func,
context

This method allows the caller to specify a callback function that will be called whenever there is a new
frame of image data available.
The TSI_FUNCTION_IMAGE_CALLBACK type definition above describes the function header for the
callback function.

TsiCamera::ResetCamera

bool ResetCamera ();

This method is used to set the camera to it’s power-on state. The application will have to query the
camera parameters to determine what the current camera settings are.
This can be accomplished by iterating over all the camera settings calling a GetParameter with the
Parameter IDs the application cares about, specifying the TSI_ATTR_FLAGS attribute, and checking for
the ATTR_VALUE_CHANGED flag. Any parameter that has changed as a result of restoring the camera
to it’s power on state will have this flag set.

TsiCamera::FreeImage

bool FreeImage (TsiImage *Image);

This method frees the image data object. The Close method and the destructor for this class will close
and free up any image data objects that have been created. Any pointers to TsiImage objects that have
been created must not be accessed after the object has been freed by the TsiCamera FreeImageData or
Close methods or the TsiSdk object’s CloseSDK method or destructor.

TsiCamera::FreeAllPendingImages

ITN000195-D02 Rev. A June 12, 2014

Page 19

TSI Camera SDK

Chapter 2: C++ API

bool FreeAllPendingImages (TsiImage *Image);

This method frees all of the the pending images in the buffer.

TsiCamera::GetPendingImage

TsiImage* GetPendingImage (void);

This method will return a pointer to the next available image.

TsiCamera::GetLastPendingImage

TsiImage* GetLastPendingImage (void);

This method will return a pointer to the last available image.

TsiCamera::StartAndWait

bool StartAndWait (int32 Timeout);

This method starts an aquistition of one or more frames using the current camera parameters and waits
for it to finish. If the elapsed time to acquire the image data exceeds the timeout value (in milliseconds),
the acquisition will be cancelled and the function will return FALSE.
Also, if the combination of current camera parameters do not permit proper operation of the camera,
FALSE will be returned.
An example would be calling StartAcquistionAndWait with the
TSI_PARAM_FRAME_COUNT parameter set to 0 (which indicates acquire until a StopCamera call is
made).
This method is intended for use in simple applications that could be simple command line applications
that are going to be invoked periodiocally.
TsiCamera::Start

ITN000195-D02 Rev. A June 12, 2014

Page 20

TSI Camera SDK

Chapter 2: C++ API

bool Start ();

This method starts an acquisition, but does not block.
The application may specify a callback function that will be called as each frame is completed and ready
for retrieval using the ReadXxxxImage functions.
The application must call the StopCamera method before issuing another StartAcquistion call.
TsiCamera::Stop

bool Stop ();

This method is used to either cancel and / or clean up after an acquisition. This method must be called
between subsequent calls to the StartCamera method.

TsiCamera::GetAcquisitionStatus

TSI_ACQ_STATUS_ID GetAcquisitionStatus ();

Returns the current status of the acquisition for applications that wish to poll for completion.

TsiCamera::GetExposeCount

int32 GetExposeCount ();

The GetExposeCount method returns the number of exposures that have been completed since a
StartCamera call.

TsiCamera::GetFrameCount

int32 GetFrameCount ();

ITN000195-D02 Rev. A June 12, 2014

Page 21

TSI Camera SDK

Chapter 2: C++ API

The GetFrameCount method returns the number of frames that have been completetly transferred to host
memory since a StartCamera call.

TsiCamera::WaitForImage

bool WaitForImage ();

An application that wishes to poll for frame completion can call this function that will return TRUE when
the next frame is available.

TsiCamera::ResetExposure

bool ResetExposure ();

If the camera is waiting for a trigger or in the middle of a long exposure, this method can be used to dump
the charge on the sensor, and reset the camera state to the beginning of the exposure.

TsiCamera::GetErrorCode

TSI_ERROR_CODE GetErrorCode();

Returns the current error code for the camera, a returned value of zero indicates success. Clears any
non-zero error code.

TsiCamera::ClearError

VOID ClearError ();

Clears any existing error code for the camera without having to read it using GetErrorCode.

ITN000195-D02 Rev. A June 12, 2014

Page 22

TSI Camera SDK

Chapter 2: C++ API

TsiCamera::GetErrorStr

bool GetErrorStr(TSI_ERROR_CODE ErrorCode, char *StringBuffer,
int32 &StringLength)

Returns the non-localized ASCII string description of the supplied error code.
Passing a NULL pointer and pointer to a variable containing a length of zero length results in the length of
the string associated with the supplied error code being returned so that a buffer of appropriate length can
be dynamically allocated.
TsiCamera::GetLastErrorStr

char* GetLastErrorStr (void)

Returns a pointer to the non-localized ASCII string description of the current error code.

ITN000195-D02 Rev. A June 12, 2014

Page 23

TSI Camera SDK

Chapter 2: C++ API

2.4.2. List of Camera Parameters
This list of parameters are used by the TsiCamera.GetParameter and TsiCamera.SetParameter methods.

TSI_PARAM_ATTR

TSI_TYPE_UNS8: For expert use only, contact us for
more info.

TSI_PARAM_PROTOCOL

TSI_TYPE_UNS32: Obsolete

TSI_PARAM_FW_VER

TSI_TYPE_TEXT: Returns the firmware revision of the
camera. The format of the returned data is
MM.mm.rr.build, where MM is a two digit major version,
mm is a two digit minor version, rr is a two digit revision,
and build is a sequential number used internally by TSI
supplied utilities.

TSI_PARAM_HW_VER

TSI_TYPE_TEXT: Returns the hardware rev of the
camera. The format of the returned data is
MM.mm.rr.build, where MM is a two digit major version,
mm is a two digit minor version, rr is a two digit revision,
and build is a sequential number used internally by TSI
supplied utilities.

TSI_PARAM_HW_MODEL

TSI_TYPE_TEXT: Returns the hardware model name of
the camera, format TBD.

TSI_PARAM_HW_SER_NUM

TSI_TYPE_TEXT: Returns the serial number of the
camera, format TBD.

TSI_PARAM_CAMSTATE

TSI_TYPE_UNS32 (enum): Get the current state of the
camera (IDLE / RUN)

TSI_PARAM_CAM_EXPOSURE_STATE
TSI_PARAM_CAM_TRIGGER_STATE

TSI_TYPE_UNS32 (enum): Get the camera's current
trigger state (NONE/ARMED/DISARMED/TRIGGERED)

TSI_PARAM_EXPOSURE_UNIT

TSI_TYPE_UNS32 (enum): Set the camera's exposure
time unit of measurement.

TSI_PARAM_EXPOSURE_TIME

TSI_TYPE_UNS32: Set the camera's exposure time in the
current unit of measurement. See
TSI_PARAM_EXPOSURE_UNIT above.

TSI_PARAM_ACTUAL_EXPOSURE_TIME

TSI_TYPE_UNS32: Gets the actual exposure time in
microseconds for a commanded exposure time.

TSI_PARAM_FRAME_TIME

TSI_TYPE_UNS32: Get the camera frame readout time in
milliseconds.

TSI_PARAM_VSIZE

TSI_TYPE_UNS32: Get the camera sensor’s number of
active rows.

TSI_PARAM_HSIZE

TSI_TYPE_UNS32: Get the camera sensor’s maximum
number of active columns.

ITN000195-D02 Rev. A June 12, 2014

Page 24

TSI Camera SDK

TSI_PARAM_ROI_BIN

Chapter 2: C++ API
TSI_TYPE_UNS32 [6]: Get/Set ROI and Binning Factors –

ROI and binning are returned as an array of six UNS32
values, which can be encoded/decoded using the $$$
structure type defined above.
TSI_PARAM_FRAME_COUNT

TSI_TYPE_UNS32: Sets number of frames to acquire
before going to the TSI_ACQ_DONE state.

TSI_PARAM_CURRENT_FRAME

TSI_TYPE_UNS32: Gets the number of frames
completely read out in an "N" frame sequence.

TSI_PARAM_OP_MODE

TSI_TYPE_UNS32 (enum): Sets the current operating
mode

TSI_PARAM_CDS_GAIN

TSI_TYPE_UNS32 (enum): Gets or Sets CDS gain
setting

TSI_PARAM_VGA_GAIN

TSI_TYPE_UNS32: Gets or Sets VGA gain

TSI_PARAM_GAIN

TSI_TYPE_UNS32: Gets or Sets linear gain (x1 – xN)

TSI_PARAM_OPTICAL_BLACK_LEVEL

TSI_TYPE_UNS32: Sets the optical black level

TSI_PARAM_PIXEL_OFFSET

TSI_TYPE_UNS32: The offset for each pixel

TSI_PARAM_READOUT_SPEED_INDEX

TSI_TYPE_UNS32: Selects the index into the set of
readout speeds the camera supports.

TSI_PARAM_READOUT_SPEED

TSI_TYPE_UNS32: Returns the digitization rate in MHz
for the given speed index.

TSI_PARAM_FRAME_RATE

TSI_TYPE_UNS32: Returns the frame rate in frames per
second. Value is returned as one 32 bit number. The
upper 16 bits represent the whole number of frames per
second. The lower 16 bits represent the fractional part in
hundredths of frames per second.

TSI_PARAM_COOLING_MODE

TSI_TYPE_UNS32 (enum): Sets the cooling mode.

TSI_PARAM_COOLING_SETPOINT

TSI_TYPE_INT32: Sets the current CCD chamber
temperature set point in hundredths of degrees centigrade
(if supported by the camera). This value contains an
implied decimal point, to convert to floating point degrees
centegrade, divide by 100.0. Inversely, to convert from
floating point degrees celcius, multiply that value by 100.0
and round or truncate (cast) as desired.

TSI_PARAM_TEMPERATURE

TSI_TYPE_INT32: Gets the current CCD chamber
temperature (if supported by camera). Uses the same
format / data type as
TSI_PARAM_COOLING_SETPOINT.

TSI_PARAM_QX_OPTION_MODE

TSI_TYPE_UNS32 (enum): Sets the QX mode

TSI_PARAM_TURBO_CODE_MODE

TSI_TYPE_UNS32 (bool): Sets TURBO Code Output
On/Off

TSI_PARAM_XORIGIN

TSI_TYPE_UNS32: Gets or sets the X component of the
upperleft corner of the specified ROI.

ITN000195-D02 Rev. A June 12, 2014

Page 25

TSI Camera SDK

Chapter 2: C++ API

TSI_PARAM_YORIGIN

TSI_TYPE_UNS32: Gets or sets the Y component of the
upperleft corner of the specified ROI.

TSI_PARAM_XPIXELS

TSI_TYPE_UNS32: Gets or sets the width in pixels of the
desired ROI.

TSI_PARAM_YPIXELS

TSI_TYPE_UNS32: Gets or sets the height in pixels of
the desired ROI.

TSI_PARAM_XBIN

TSI_TYPE_UNS32: Used to set or query the current
horizontal binning factor.

TSI_PARAM_YBIN

TSI_TYPE_UNS32: Used to set or query the current
horizontal binning factor.

TSI_PARAM_IMAGE_ACQUISITION_MODE TSI_TYPE_UNS32: Obsolete, do not use
TSI_PARAM_NAMED_VALUE

TSI_TYPE_TEXT: For internal use only.

TSI_PARAM_TAPS_INDEX

TSI_TYPE_UNS32: Used to select or query the current
tap setting.

TSI_PARAM_TAPS_VALUE

TSI_TYPE_UNS32: Used to query the number of taps for
the current tap setting (See TSI_PARAM_TAPS_INDEX
above).

TSI_PARAM_RESERVED_1

Reserved for internal use.

TSI_PARAM_RESERVED_2

Reserved for internal use.

TSI_PARAM_RESERVED_3

Reserved for internal use.

TSI_PARAM_RESERVED_4

Reserved for internal use.

TSI_PARAM_GLOBAL_CAMERA_NAME

TSI_TYPE_TEXT: Returns the camera name stored in the
camera thats visible to users on the network and software
loading the camera.

TSI_PARAM_CDS_GAIN_VALUE

TSI_TYPE_UNS32: For expert use only, contact us for
details.

TSI_PARAM_PIXEL_SIZE

TSI_TYPE_FP: Size of the pixel width in microns (pixel
assumed square).

TSI_PARAM_BITS_PER_PIXEL

TSI_TYPE_UNS32: Number of bits per pixel in raw data.

TSI_PARAM_BYTES_PER_PIXEL

TSI_TYPE_UNS32: Number of bytes per pixel (1 or 2).

TSI_PARAM_READOUT_TIME

TSI_TYPE_FP: Readout time of the camera in seconds.

TSI_PARAM_HW_TRIGGER_ACTIVE

TSI_TYPE_UNS32: Gets or sets the hardware active
trigger state. 1 = Active, 0 = Not Active.

TSI_PARAM_HW_TRIG_SOURCE

TSI_TYPE_UNS32 (enum): Gets or sets the HW trigger
source.

TSI_PARAM_HW_TRIG_POLARITY

TSI_TYPE_UNS32 (enum): Gets or sets the HW trigger
polarity.

TSI_PARAM_TAP_BALANCE_ENABLE

TSI_TYPE_UNS32 : Gets or sets the tap balance enable.
1 = Active, 0 = Not Active.

ITN000195-D02 Rev. A June 12, 2014

Page 26

TSI Camera SDK

ITN000195-D02 Rev. A June 12, 2014

Chapter 2: C++ API

Page 27

TSI Camera SDK

2.5.

Chapter 2: C++ API

TsiImage Class

2.5.1. DATA MEMBERS

unsigned int m_Width;
unsigned int m_Height;
unsigned int m_BitsPerPixel;

unsigned int m_BytesPerPixel;
unsigned
unsigned
unsigned
unsigned
unsigned

int
int
int
int
int

m_SizeInPixels;
m_SizeInBytes;
m_XBin;
m_VBin;
m_ROI[4];

unsigned int m_ExposureTime_ms;
unsigned int m_FrameNumber;

union
{
void
char
unsigned char
short
unsigned short
unsigned int

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

Width of image in pixels.
Height of image in pixels.
The number of significant
bits per pixel in the
pixel data.
The number of bytes
consumed by a pixel.
Size of image in pixels.
Size of image in bytes.
Horizontal binning value.
Vertical binning value.
The region of interest
(subimage) that the pixels
were gathered from.
Format: [x0, y0, x1, y1]
Exposure time in
milliseconds.
// Frame number returned from
frame grabber.

*vptr;
*i8;
*ui8;
*i16;
*ui16;
*ui32;

} m_PixelData;

2.5.2. METHODS
TsiImage::Copy

bool Copy(TsiImage *src)

Copies an existing TsiImage's data.

ITN000195-D02 Rev. A June 12, 2014

Page 28

TSI Camera SDK

Chapter 2: C++ API

TsiImage::Clone

TsiImage* Clone(TsiImage *src)

Creates a new duplicate of the specified TsiImage.

2.6.

TsiUtil Class

2.6.1. METHODS

TsiUtil:WriteImageToTIFF
bool WriteImageToTIFF (char *file_name, TsiImage *image)

Saves the TsiImage with the specified name into a 16-bit Tiff image.

TsiUtil:WriteImageToPNG
bool WriteImageToPNG (char *file_name, TsiImage *image)

Saves the TsiImage with the specified name into a 16-bit PNG image.

ITN000195-D02 Rev. A June 12, 2014

Page 29

TSI Camera SDK

Chapter 3

Chapter 3: Thorlabs Worldwide Contacts

Thorlabs Worldwide Contacts

USA, Canada, and South America
Thorlabs, Inc.
56 Sparta Avenue
Newton, NJ 07860
USA
Tel: 973-579-7227
Fax: 973-300-3600
www.thorlabs.com
www.thorlabs.us (West Coast)
Email: sales@thorlabs.com
Support: techsupport@thorlabs.com
Europe
Thorlabs GmbH
Hans-Böckler-Str. 6
85221 Dachau
Germany
Tel: +49-(0)8131-5956-0
Fax: +49-(0)8131-5956-99
www.thorlabs.de
Email: europe@thorlabs.com

UK and Ireland
Thorlabs Ltd.
1 Saint Thomas Place, Ely
Cambridgeshire CB7 4EX
Great Britain
Tel: +44 (0)1353-654440
Fax: +44 (0)1353-654444
www.thorlabs.com
Email: sales.uk@thorlabs.com
Support: techsupport.uk@thorlabs.com

France
Thorlabs SAS
109, rue des Côtes
78600 Maisons-Laffitte
France
Tel: +33 (0) 970 444 844
Fax: +33 (0) 825 744 800
www.thorlabs.com
Email: sales.fr@thorlabs.com

Scandinavia
Thorlabs Sweden AB
Mölndalsvägen 3
412 63 Göteborg
Sweden
Tel: +46-31-733-30-00
Fax: +46-31-703-40-45
www.thorlabs.com
Email: scandinavia@thorlabs.com

Japan
Thorlabs Japan, Inc.
Higashi-Ikebukuro Q Building, 1F
2-23-2, Higashi-Ikebukuro,
Toshima-ku, Tokyo 170-0013
Japan
Tel: +81-3-5979-8889
Fax: +81-3-5979-7285
www.thorlabs.jp
Email: sales@thorlabs.jp

China
Thorlabs China
Room A101, No. 100
Lane 2891, South Qilianshan Road
Putuo District
Shanghai
China
Tel: +86 (0)21-60561122
Fax: +86 (0)21-32513480
www.thorlabs.hk
Email: chinasales@thorlabs.com

ITN000195-D02 Rev. A June 12, 2014

Page 30

www.thorlabs.com



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : Yes
Author                          : GHavenga@thorlabs.com
Company                         : Thorlabs, Inc.
Content Type Id                 : 0x010100ECD834F0A1D9B046B167EC0DB6FE7639
Create Date                     : 2014:06:12 11:32:26-05:00
Doc Type                        : 112;#Programming Reference|bdaa40f6-93d2-48d0-89de-e6f096799b2d
Keywords                        : ITN000195-D02
Modify Date                     : 2014:06:12 11:32:36-05:00
Source Modified                 : 
TSI Document Number             : 86-9000-000
TSI Document Revision           : Draft 0.30
Dlc Doc Id Item Guid            : b8f70a52-41d3-46df-9594-17282ec12df4
Tagged PDF                      : Yes
XMP Toolkit                     : Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26
Metadata Date                   : 2014:06:12 11:32:36-05:00
Creator Tool                    : Acrobat PDFMaker 10.1 for Word
Document ID                     : uuid:4590ef32-a0cf-43b4-a6b6-dbf1af7e7620
Instance ID                     : uuid:f126c227-df99-49ca-adab-3cc2ad44efa0
Subject                         : 2
Format                          : application/pdf
Title                           : TSI Camera API Manual
Creator                         : GHavenga@thorlabs.com
Producer                        : Adobe PDF Library 10.0
TSI0020 Document 0020 Number    : 86-9000-000
TSI0020 Document 0020 Revision  : Draft 0.30
Tag dlc Doc Id Item Guid        : b8f70a52-41d3-46df-9594-17282ec12df4
Page Layout                     : OneColumn
Page Count                      : 31
EXIF Metadata provided by EXIF.tools

Navigation menu