Impact Acquire SDK C++
Overview

This is the documentation for developers who want to work with the C++ interface of Impact Acquire. It is based on the C interface but provides a more convenient and object orientated approach to properties and functions offered by a device driver.

The complete C++ part of the interface is provided in source. This has some advantages:

  • This interface works for every C++ compiler
  • The C++ wrapper might act as a source of information for programmers coming from other programming languages (e.g. Delphi) when writing their own wrappers
  • The user can step through this part of the code

Every program written using this interface will start in one or the other form with creating an instance of the class mvIMPACT::acquire::DeviceManager. Each application needs at least one instance of this class while devices are being accessed. To find out how to gain access to a certain device look at the detailed description of this class.

Note
Please carefully read the detailed description of the mvIMPACT::acquire::DeviceManager 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!

Once a pointer (or in other words: access) to the desired device represented by an instance of the class mvIMPACT::acquire::Device has been obtained every other device related properties or functions can be accessed.

Stuff from the mvIMPACT::acquire::GenICam namespace is only available when using the mvIMPACT::acquire::dilGenICam interface layout (by setting mvIMPACT::acquire::Device::interfaceLayout to mvIMPACT::acquire::dilGenICam before opening the device. Classes from the mvIMPACT::acquire namespace might only be available in interface layout mvIMPACT::acquire::dilDeviceSpecific. These classes will state their limited availability in the documentation. Without setting the interface layout, mvIMPACT::acquire::dilDeviceSpecific will be used by default for all non GenICam™ devices and all mvBlueCOUGAR-X/XD devices. All other GenICam™ compliant devices will only support the mvIMPACT::acquire::dilGenICam layout. The example GenICamInterfaceLayout.cpp shows how to set the interface layout. All example applications as well as complex GUI applications like ImpactControlCenter will either silently or explicitly switch to the mvIMPACT.acquire.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 and sets it accordingly!
Note
When the last instance to objects of the class mvIMPACT::acquire::DeviceManager is destroyed, every device pointer or handle to interface properties will become invalid automatically, as the destructor of the device manager decrements an internal usage counter, that automatically closes all devices and frees allocated resources, once this usage counter reaches 0. So make sure there is always at least one instance of the device manager present in your application.

Some source code samples how to locate a certain mvIMPACT::acquire::Device also can be found in the detailed description of the class mvIMPACT::acquire::DeviceManager.

Depending on the C++ standard available to your application and the complexity of the acquisition task you need to solve, getting the first image might look like described in one of the two sections below: