Impact Acquire SDK C
Overview

This is the documentation for developers who want to work with the C compliant interface of the driver. This interface represents the basis for the C++ interface but it can also be access with pure C-compilers or from other programming languages that can take advantage of C compliant exported dynamic library functions.

Note
If a C++ compiler is available it is highly recommend to work with the C++ interface instead of this C interface as it is much easier to use. The complete C++ interface is available in source code and adds NO relevant overhead to the application. It internally calls the functions described in this interface and will greatly reduce the development time and will result in a more readable code without introducing any disadvantages.

The standard way of using this library roughly works like this:

Before any device can be accessed the user need to initialize the library. To this the functions DMR_Init() must be used. Calling this function for the first time will initialize internal data structures and will force the device manager to scan the system for recognized device types.

Note
Please carefully read the detailed description of the DMR_Init() at least once as there are some important things to keep in mind when designing your application! Not doing so might result in severe headache so be warned!

This function can be called multiple times, but for each time DMR_Init() is called the user must make sure that later, when this library is not needed anymore the function DMR_Close() is called, as otherwise resource leaks will occur.

After the library has been initialized successfully (the return value of most of the functions in this module will be an error code), the user can start to locate a certain device by using the function DMR_GetDevice(). When the corresponding device has been located, this device can be initialized or closed via calls to the functions DMR_OpenDevice() and DMR_CloseDevice()

Note
In case of a GenICam™ compliant device it is important to select the correct interface layout (dilDeviceSpecific or dilGenICam(recommended)) before opening the device. Without setting the interface layout, dilDeviceSpecific will be used by default for all non GenICam™ devices and all mvBlueCOUGAR-X/XD devices. This will lead to a less extensive feature set. Since the settings are located at a different position within the property tree off the device, it might cause unexpected behaviour if a property is modified or read based on incorrect assumptions. Because of this all example applications as well as complex GUI applications like ImpactControlCenter will either silently or explicitly switch to the dilGenICam interface layout if possible and the user didn't say otherwise so if an application copies code from example code make sure your application is aware of the interface layout! Further details regarding interface layouts:

Once a device has been initialized the user will receive a handle to the devices interface (HDRV). This handle is needed to call most of the other functions interacting with the actual device. All the functions called for a certain device will start with a leading DMR_. These include (among others) functions to capture and access images and functions to load a save settings made for this device.