The example code is meant to show how the Pixelink 4.0 API can be used to interact with a Pixelink camera. The applications do not provide a lot of functionality, but the principles from each can be combined to create a more powerful application.

In most cases, there is minimal error handling, so as not to clutter the code. The point of the application is to show how to interact with the Pixelink API, not tell you how to do your error handling.

Many are written in C, to show the "lowest" common denominator, and some are in C++ to make use of simple memory management (i.e. std::vector) or because they are using Microsoft Foundation Classes (MFC).

If you're unfamiliar with the Pixelink API, we recommend you visit the following example apps in the following order:

1) initialize

2) getcamerafeature

3) getnextframe

4) preview

After that, feel free to look around the other example apps as your needs dictate. There are many apps, but they can be grouped into a few categories:

Initialization and Camera Information


A demonstration of a minimal interaction with a camera.


This demonstrates retrieval of internal camera information.


This demonstrates the recommended method to determine the camera model number.


This retrieves information about various camera features.


An example app -- and a great debugging tool -- that retrieves and displays information about all camera features using both PxLGetCameraFeatures and PxLGetFeature in a human-readable form.


A demonstration of how to get more information about the most recent error reported by the Pixelink API.

Camera Configuration and Control


This application shows how to retrieve and manipulate the contents of the camera's lookup table.


A demonstration of the interplay between gamma and the lookup table that demonstrates how to query and control camera features.


Demonstrates how to enable and set the frame rate.


Demonstrates how to control the flip feature, as well as some of its quirks.


A simple windows application that provides a preview of the image and allows control of autoexposure.


Demonstrates how to enable and disable flat-field correction.

Capturing Images and Video


This retrieves an image from the camera, converts it to a jpeg, and stores it to a file. It repeats this process for several formats such as .bmp and .psd.


This captures images from the camera (using PxLGetClip) to a PixeLINK data stream (pds) file, and then converts the pds to an avi file (using PxLFormatClip).

See also the callback clip example app.


This is a a small application which demonstrates how to use PxLGetClip and PxLFormatClip to create a 'security' camera application.


A demonstration of a wrapper around (and recommended practice for using) PxLGetNextFrame to make it a little more robust, accounting for intermittent ApiCameraTimeout errors.


Shows functionality added in 7.0 which permits a call to PxLGetNextFrame to skip over (drop) a frame without having to actually copy the data from the API to a local buffer.


How to capture an image and use it to generate a Win32 GDI HBITMAP.


Parses through a PixeLINK Data Stream file (.pds) and converts the individual images to bitmap files (.bmp) or comma-separated values.


Simple program to find and stream a polar camera, using a robust frame grab algorithms, it collects and saves four images from the polar camera, where each image represents each of the 4 polar channels.


Simple program to find and stream an HDR camera, using a robust frame grab algorithms, it collects images from the HDR camera and saves them to files.


Demonstrates how to capture a camera image that can be 'imported' into openCV.



This simple Win32 application demonstrates the basics of the preview window.

See also the callback example app.


A simple Win32 application which demonstrates how to modify preview data in an CALLBACK_PREVIEW callback function.


A basic Win32 application which provides a simple C++ graphics engine to modify preview data in an CALLBACK_PREVIEW callback function.

The graphics engine provides the ability to draw lines, circles, ellipses, and rectangles.


A simple Win32 application which previews the camera within the client area of a window.


This MFC-based dialog application demonstrates the basics of previewing into a Picture control.



Demonstrates the basics of how to use the 'callback' functionality with CALLBACK_FORMAT_IMAGE and CALLBACK_PREVIEW.


Demonstrates PxLGetClip, PxLFormatClip, and how to use it with the callback for CALLBACK_FORMAT_CLIP.



Demonstrates the creation, use and destruction of descriptors.

Note that the camera must support descriptors.


Demonstrates how the creation and removal of descriptors affects feature values.

Note that the camera must support descriptors.


Demonstrates the creation, use and destruction of descriptors and how to set a feature (extended shutter (also known as 'knees')) for each.

Note that the camera must support descriptors.

Trigging and GPIO


A simple overview of the three different triggering types: free running, software, and hardware.


Demonstration of a few ways to abort a thread blocked in PxLGetNextFrame waiting for a hardware trigger.


Demonstration of how to use software triggering as a "virtual" hardware trigger using a special way to call PxLGetNextFrame combined with the CALLBACK_FRAME callback.


Demonstrates the proper way of configuring FEATURE_TRIGGER_WITH_CONTROLLED_LIGHT.


Demonstration of how to configure the camera's GPOs for 'normal' mode.


Demonstrates how to have multiple cameras simultaneously capture images by synchronizing them all with hardware and software triggering.

IP / Gigabit Ethernet


Demonstration of PxLGetNumberCamerasEx, used to query IP (GigE) cameras.


Demonstration of PxLSetCameraIPAddress, used to set a GigE camera's IP address.


Demonstration of how to use PxLPrivateCmd to set the GigE heartbeat timeout value.

Image Processing


A simple app which captures an image to file when motion is detected in the image.


The SDK installation will set the environment variable PIXELINK_SDK_ROOT for you. Each of the demonstration applications is provided as a separate Microsoft Visual C++ (2008) solution. (*.sln), and each of the solutions makes use of this environment variable to locate the header files and a library provided by the Pixelink SDK. This allows you to install the Pixelink SDK anywhere on your computer without having to change any of the example application configurations.

For example, the 'triggering' example application has this configuration: 

The additional include directory is the 'include' directory under the SDK root directory.

In the following example, the Pixelink SDK was installed to D:\Program Files\PixeLINK, so the environment variable was set to this directory by the SDK installation, as can be verified by going to Start\Settings\Control Panel\System\Advanced\Environment Variables:

When the SDK is installed to the C drive, the SDK installer will set the PIXELINK_SDK_ROOT to this directory:

Once you've installed the SDK, you should be able to compile, link and run all the C and C++ example applications. 

If you have any questions about the sample code, you can reach Pixelink support via the website, or by email at