Impact Acquire SDK C++
|
The function interface to devices supported by this interface. More...
#include <mvIMPACT_acquire.h>
Public Member Functions | |
int | acquisitionStart (void) const |
Manually starts the acquisition engine of this device driver instance. | |
int | acquisitionStop (void) const |
Manually stops the acquisition engine of this device driver instance. | |
int | createImageRequestControl (const std::string &name, const std::string &parent="Base", ComponentList *pNewRequestControl=0) |
Creates a new mvIMPACT::acquire::ImageRequestControl object. | |
int | createSetting (const std::string &name, const std::string &parent="Base", ComponentList *pNewSetting=0) |
Creates a new setting. | |
int | deleteSetting (const std::string &name, TStorageLocation storageLocation=slNative, TScope scope=sGlobal) const |
Deletes a setting from the specified location. | |
int | deleteSettingFromStack (void) |
Deletes the last setting from the setting stack. | |
FunctionInterface (const FunctionInterface &src) | |
Constructs a new mvIMPACT::acquire::FunctionInterface from an existing one. | |
FunctionInterface (Device *pDev, RequestFactory *pRequestFactory=0) | |
Constructs a new function interface for the device pointed to by pDev. | |
const std::vector< std::string > & | getAvailableImageRequestControls (void) const |
Returns the names of the image request controls available for this mvIMPACT::acquire::Device. | |
const std::vector< std::string > & | getAvailableSettings (void) const |
Returns the names of the settings available for this mvIMPACT::acquire::Device. | |
int | getCurrentCaptureBufferLayout (ImageRequestControl &imageRequestControl, int &size, int &alignment) const |
Returns information about the current capture buffer requirements. | |
int | getCurrentCaptureBufferLayout (ImageRequestControl &imageRequestControl, Request **ppRequest=0, int *pAlignment=0) const |
Returns information about the current capture buffer requirements. | |
Request * | getRequest (int nr) const |
Returns a pointer to the desired mvIMPACT::acquire::Request. | |
ComponentList | getSetting (const std::string &name) const |
Returns a mvIMPACT::acquire::ComponentList object to a setting with a specified name. | |
int | imageRequestConfigure (const Request *pRequest) const |
Sets a request into configuration mode. | |
int | imageRequestReset (int requestCtrlNr, int mode) const |
Deletes all requests currently queued for the specified mvIMPACT::acquire::ImageRequestControl. | |
int | imageRequestResultQueueElementCount (int queueNr=0) const |
Returns the number of mvIMPACT::acquire::Request objects in the result queue . | |
int | imageRequestSingle (ImageRequestControl *pImageRequestControl=0, int *pRequestUsed=0) const |
Sends an image request to the mvIMPACT::acquire::Device driver. | |
int | imageRequestUnlock (int nr) const |
Unlocks the request for the driver again. | |
int | imageRequestWaitFor (int timeout_ms, int queueNr=0) const |
Waits for a request object to become ready. | |
bool | isRequestNrValid (int nr) const |
Check if nr specifies a valid mvIMPACT::acquire::Request. | |
int | isSettingAvailable (const std::string &name, TStorageLocation storageLocation=slNative, TScope scope=sGlobal) const |
Checks if a certain setting is available under the specified location. | |
int | loadAndDeleteSettingFromStack (void) |
loads the last setting from the setting stack and then removes this setting from the stack. | |
int | loadSetting (const std::string &name, TStorageFlag storageFlags=sfNative, TScope scope=sGlobal) const |
Loads a previously stored setting. | |
int | loadSettingFromDefault (TScope scope=sUser) const |
Loads the default settings. | |
int | loadSettingFromStack (void) |
loads the last setting from the setting stack. | |
FunctionInterface & | operator= (const FunctionInterface &rhs) |
Allows assignments of mvIMPACT::acquire::FunctionInterface objects. | |
unsigned int | requestCount (void) const |
Returns the number of available request objects. | |
int | saveCurrentSettingOnStack (TStorageFlag storageFlags=sfRAM) |
Saves the current setting on the setting stack. | |
int | saveSetting (const std::string &name, TStorageFlag storageFlags=sfNative, TScope scope=sGlobal) const |
Stores the current settings. | |
int | saveSettingToDefault (TScope scope=sUser) const |
Stores the current settings under a default location. | |
void | updateRequests (void) const |
Updates the internal cache for request objects. | |
virtual | ~FunctionInterface (void) |
Class destructor. | |
The function interface to devices supported by this interface.
This class contains all the basic functions needed when working with a device. There are not too many functions as most data will be represented by 'properties' in other classes of this module, keeping the set of functions to remember rather small. To construct a new function interface, a pointer to a mvIMPACT::acquire::Device object must be passed to the constructor of mvIMPACT::acquire::FunctionInterface. In order to work with the mvIMPACT::acquire::FunctionInterface object the device needs to be initialized, so if the mvIMPACT::acquire::Device object pointed to by pDev in the constructors parameter list hasn't been opened already the constructor will try to do that.
Please refer to one of the examples listed below to get an idea on how to use this class for data acquisition:
|
inlineexplicit |
Constructs a new function interface for the device pointed to by pDev.
In order to work with the mvIMPACT::acquire::FunctionInterface object the device needs to be initialized, so if the mvIMPACT::acquire::Device object pointed to by pDev in the constructors parameter list hasn't been opened already the constructor will try to do that. Thus internally a call to mvIMPACT::acquire::Device::open might be preformed with all consequences following from this call.
[in] | pDev | A pointer to a mvIMPACT::acquire::Device object obtained from a mvIMPACT::acquire::DeviceManager object. |
[in] | pRequestFactory | A pointer to a request factory. By supplying a custom request factory the user can control the type of request objects that will be created by the function interface. |
|
inline |
Constructs a new mvIMPACT::acquire::FunctionInterface from an existing one.
[in] | src | A constant reference to the mvIMPACT::acquire::FunctionInterface object, this object shall be created from |
|
inlinevirtual |
Class destructor.
|
inline |
Manually starts the acquisition engine of this device driver instance.
Calling this function will manually start this device driver's acquisition engine. This will only have an effect on the overall behaviour if mvIMPACT::acquire::Device::acquisitionStartStopBehaviour is set to mvIMPACT::acquire::assbUser.
If supported by the device driver, starting and stopping the acquisition engine manually can sometimes help to overcome capture queue underruns or certain restrictions in the underlying device driver technology.
|
inline |
Manually stops the acquisition engine of this device driver instance.
Calling this function will manually stop this device drivers acquisition engine. This will only have effect on the overall behaviour, if mvIMPACT::acquire::Device::acquisitionStartStopBehaviour is set to mvIMPACT::acquire::assbUser.
|
inline |
Creates a new mvIMPACT::acquire::ImageRequestControl object.
This function creates a new mvIMPACT::acquire::ImageRequestControl based on an existing one. New mvIMPACT::acquire::ImageRequestControl instances can only be derived from mvIMPACT::acquire::ImageRequestControl instances that already exist. When the driver has been initialized there will be at least one base mvIMPACT::acquire::ImageRequestControl called 'Base', which acts as the base for all other request controls.
All mvIMPACT::acquire::ImageRequestControl constructed by the application must be derived either from this base or any of its children using this function.
When this function succeeds, the mvIMPACT::acquire::ImageRequestControl constructor can be called with the name parameter passed to this function to get access to this newly registered mvIMPACT::acquire::ImageRequestControl.
[in] | name | The name of the new mvIMPACT::acquire::ImageRequestControl object. |
[in] | parent | The name of the mvIMPACT::acquire::ImageRequestControl the new object shall be derived from. |
[out] | pNewRequestControl | A pointer to a mvIMPACT::acquire::ComponentList object that will receive the ID of the newly created request control. This parameter can be 0 if the application is not interested in that parameter. |
|
inline |
Creates a new setting.
This function creates a new setting base on an existing one. New settings can only be derived from settings that already exist. When the driver has been initialized there will be at least one base setting called 'Base', which acts as the base for all other settings.
When a new setting is created it derives all the properties from the parent setting. That means initially the new setting will contain the very same data as the parent setting. As long as a component hasn't been modified in the new setting it will depend on the parent settings data. That means if e.g. a property in the parent list is modified, the newly created setting will also benefit from the updated value.
To release a certain component from this dependency it must be assigned a new value. The function mvIMPACT::acquire::Component::isDefault will return false afterwards indicating that the component no longer depends on the parent.
To restore this parent <-> child dependency the user can call the function mvIMPACT::acquire::Component::restoreDefault. Afterwards settings applied to the parent component will also be visible in the child component again.
When a new setting has been created successfully the name used to create the setting can be passed to any of the constructors of the setting related classes (mvIMPACT::acquire::CameraSettingsBase, mvIMPACT::acquire::ImageProcessing, ...) to access the new components.
[in] | name | The name of the setting to be created. |
[in] | parent | The name of the setting to derive the new setting from. |
[out] | pNewSetting | A pointer to a mvIMPACT::acquire::ComponentList object that will receive the ID of the newly created setting. This parameter can be 0 if the application is not interested in that parameter. |
|
inline |
Deletes a setting from the specified location.
This function deletes a setting from the specified location.
[in] | name | The name or the full path under where the setting is located. |
[in] | storageLocation | The location of the setting. |
[in] | scope | Specifies the scope of this operation. |
|
inline |
Deletes the last setting from the setting stack.
This function deletes the last setting from the setting stack.
See mvIMPACT::acquire::FunctionInterface::saveCurrentSettingOnStack for an example how to use this feature.
|
inline |
Returns the names of the image request controls available for this mvIMPACT::acquire::Device.
This function returns a const reference to a string array containing the names of all image request controls available for the current mvIMPACT::acquire::Device. These names are valid constructor parameters for objects of the type mvIMPACT::acquire::ImageRequestControl.
New image request controls can be created by calling mvIMPACT::acquire::FunctionInterface::createImageRequestControl.
|
inline |
Returns the names of the settings available for this mvIMPACT::acquire::Device.
This function returns a const reference to a string array containing the names of all settings available for the current mvIMPACT::acquire::Device. These names are valid constructor parameters for objects like mvIMPACT::acquire::CameraSettingsBase, mvIMPACT::acquire::ImageProcessing, mvIMPACT::acquire::ImageDestination or classes derived from these types.
New settings can be created by calling mvIMPACT::acquire::FunctionInterface::createSetting
|
inline |
Returns information about the current capture buffer requirements.
When an application wants to provide capture buffers, this function will be needed in order to get information on how the capture buffers must be constructed.
To find out more about capturing to user memory please refer to the application CaptureToUserMemory.cpp
[in] | imageRequestControl | A reference to the mvIMPACT::acquire::ImageRequestControl object containing the setting for which the current capture buffer layout shall be queried. The setting can be defined via the property mvIMPACT::acquire::ImageRequestControl::setting. |
[out] | size | On a successful call this variable will receive the size needed for capturing into user supplied buffers that use the current settings. |
[out] | alignment | On a successful call this variable will receive the alignment needed for capturing into user supplied buffers that use the current settings. |
|
inline |
Returns information about the current capture buffer requirements.
When an application wants to provide capture buffers, this function will be needed in order to get information on how the capture buffers must be constructed. The most important parameters will probably be alignment and size, thus for most application calling the other overload of this function will probably be enough.
To find out more about capturing to user memory please refer to the application CaptureToUserMemory.cpp
[in] | imageRequestControl | A reference to the mvIMPACT::acquire::ImageRequestControl object containing the setting for which the current capture buffer layout shall be queried. The setting can be defined via the property mvIMPACT::acquire::ImageRequestControl::setting. |
[out] | ppRequest | On a successful call this variable will receive a pointer to a mvIMPACT::acquire::Request object reflecting the current capture buffer layout. |
[out] | pAlignment | On a successful call this variable will receive the alignment needed for capturing into user supplied buffers that use the current settings. |
|
inline |
Returns a pointer to the desired mvIMPACT::acquire::Request.
This function returns a pointer to the mvIMPACT::acquire::Request stored at nr in the internal array of requests. If nr refers to an invalid mvIMPACT::acquire::Request
(e.g. when nr is higher than the actual number of
available requests) an STL out_of_range exception will be thrown.
[in] | nr | The number of the request to return |
|
inline |
Returns a mvIMPACT::acquire::ComponentList object to a setting with a specified name.
This function returns a mvIMPACT::acquire::ComponentList object to a setting with a specified name or will raise an exception if no such setting exists.
[in] | name | The name of the setting to locate |
|
inline |
Sets a request into configuration mode.
In configuration mode certain properties like mvIMPACT::acquire::Request::imageData, mvIMPACT::acquire::Request::imageSize, mvIMPACT::acquire::Request::imageMemoryMode of a request object can be modified. This can be used to configure one or more requests to use a user supplied memory. To use only a subset of the mvIMPACT::acquire::Request objects available the mvIMPACT::acquire::ImageRequestControl::requestToUse feature can be used.
Only requests that are currently not used by the driver and are not locked because they contain image data that hasn't been processed can be set into configuration mode.
User supplied buffers must follow the alignment and size requirements reported by versions of the function mvIMPACT::acquire::FunctionInterface::getCurrentCaptureBufferLayout. Calling a version of this function will return all the information required to allocate buffers that can be used to capture data for the specified settings.
When allocating memory on the heap, the complete buffer size is needed which is calculated like this:
size + alignment
[in] | pRequest | A const pointer to the request object to configure |
|
inline |
Deletes all requests currently queued for the specified mvIMPACT::acquire::ImageRequestControl.
This function will terminate all running image acquisitions associated with the queue bound to the specified image request control and in addition to that will empty the queue of pending image requests for that queue. Also all requests that reside in the result queue and have not been picked up by the application will be unlocked and removed from the result queue. So after this function returns only the requests currently in possession of the application (so requests that have been picked up by successful calls to mvIMPACT::acquire::FunctionInterface::imageRequestWaitFor that have NOT been unlocked) need to be handled. All other requests are in a state where they can be queued for an acquisition again.
[in] | requestCtrlNr | The mvIMPACT::acquire::ImageRequestControl for which all the requests shall be cancelled. |
[in] | mode | Currently unsupported. MUST be set 0. |
|
inline |
Returns the number of mvIMPACT::acquire::Request objects in the result queue .
This functions queries the number of mvIMPACT::acquire::Request objects currently in the result queue that are available for pickup. This number reflects the number of mvIMPACT::acquire::FunctionInterface::imageRequestWaitFor calls that could be executed afterwards the would return with a valid mvIMPACT::acquire::Request object immediately without waiting!
[in] | queueNr | The result queue to be queried. |
|
inline |
Sends an image request to the mvIMPACT::acquire::Device driver.
This functions sends a single image request to the capture device. To wait for the image to become ready call the function mvIMPACT::acquire::FunctionInterface::imageRequestWaitFor.
[in] | pImageRequestControl | A pointer to the mvIMPACT::acquire::ImageRequestControl object to be used for this request. mvIMPACT::acquire::ImageRequestControl objects define (among other things), which setting will be used for this image acquisition (via the property mvIMPACT::acquire::ImageRequestControl::setting). If this pointer is 0 the default request control will be used for this operation. |
[out] | pRequestUsed | If a valid pointer to an integer is passed here, this variable receives the number of the mvIMPACT::acquire::Request which will be used to process this request. |
|
inline |
Unlocks the request for the driver again.
To ensure that no image data is overwritten by another image request while the user still deals with the image from a previous acquisition each image buffer will be locked by the driver when it is returned to the user by a call to mvIMPACT::acquire::FunctionInterface::imageRequestWaitFor. No new image will be captured into the same buffer until the user unlocks the buffer again by calling mvIMPACT::acquire::FunctionInterface::imageRequestUnlock.
[in] | nr | The number of the request to unlock. This is typically a value returned from a call to mvIMPACT::acquire::FunctionInterface::imageRequestWaitFor. |
|
inline |
Waits for a request object to become ready.
This function waits for a request object previously sent to the capture device by calling mvIMPACT::acquire::FunctionInterface::imageRequestSingle. When a new request became ready during the period of time specified by the timeout_ms parameter this request is extracted from the result queue and is returned to the user so the same request can not be returned twice until it has been processed and unlocked by the application.
[in] | timeout_ms | The maximum wait time in milliseconds (ms) for this request to become ready. If timeout_ms is '-1', the function's timeout interval never elapses. If the result queue specified by the queueNr parameter already contains a request when calling this function the function will return immediately. Please note that each request has its own timeout that is independent from this wait timeout, thus this function will return with a valid request after the timeout for this request has elapsed even if e.g. a trigger has not been detected. For detailed information on the interaction of the timeout of this function and the timeout of a request please refer to the chapter Acquiring Data in the C++ section. |
[in] | queueNr | The queue where to wait for the request. The number of request queues available depends on the number of video channels offered by the device. The queue a processed request ends up in can be defined by setting the property mvIMPACT::acquire::ImageRequestControl::resultQueue BEFORE calling mvIMPACT::acquire::FunctionInterface::imageRequestSingle. |
|
inline |
Check if nr specifies a valid mvIMPACT::acquire::Request.
|
inline |
Checks if a certain setting is available under the specified location.
This function checks if a certain setting is available under the specified location.
[in] | name | The name or the full path under where the setting is located. |
[in] | storageLocation | The location of the setting. |
[in] | scope | Specifies the scope of this operation. |
|
inline |
loads the last setting from the setting stack and then removes this setting from the stack.
This function loads the last setting from the setting stack and then removes this setting from the stack.
See mvIMPACT::acquire::FunctionInterface::saveCurrentSettingOnStack for an example how to use this feature.
See also mvIMPACT::acquire::FunctionInterface::loadSetting to find out which features of a GenICam device are stored in a setting and which are not!
|
inline |
Loads a previously stored setting.
This function can be used to restore a previously stored setting again.
To load a setting from a file the mvIMPACT::acquire::sfFile should be specified as part of storageFlags. To load a setting from a platform specific location such as the Registry under Windows© mvIMPACT::acquire::sfNative should be specified. It's not allowed to combine mvIMPACT::acquire::sfFile and mvIMPACT::acquire::sfNative for this operation.
Impact Acquire Version | Loading an XML settings file created with Impact Acquire version < 2.9.0 | Loading an XML settings file created with Impact Acquire version 2.9.0 - 2.10.1 | Loading an XML settings file created with Impact Acquire version 2.11.0 or later |
---|---|---|---|
< 2.9.0 | YES | NO | NO |
2.9.0 - 2.10.1 | YES | YES | NO |
>= 2.11.0 | YES | YES | YES |
[in] | name | The name or the full path under where the setting is located. |
[in] | storageFlags | The flags which define which information shall be read from the location and how this information shall be interpreted. |
[in] | scope | Specifies where the information is located. |
Loads the default settings.
This function will try to load the settings from a default location. This function can only succeed if a setting has been stored previously by a call to mvIMPACT::acquire::FunctionInterface::saveSettingToDefault.
[in] | scope | Specifies where the information is located. |
|
inline |
loads the last setting from the setting stack.
This function loads the last setting from the setting stack.
See mvIMPACT::acquire::FunctionInterface::saveCurrentSettingOnStack for an example how to use this feature.
See also mvIMPACT::acquire::FunctionInterface::loadSetting to find out which features of a GenICam device are stored in a setting and which are not!
|
inline |
Allows assignments of mvIMPACT::acquire::FunctionInterface objects.
|
inline |
Returns the number of available request objects.
|
inline |
Saves the current setting on the setting stack.
This function saves the current setting on the setting stack. Together which the functions mentioned below this implements a stack for capture settings. This can become handy when entering a section of code that might modify the current capture settings in various ways and depending on the result these modifications shall either be kept or discarded at the end of the operation.
The stack makes use of Impact Acquires ability to store capture settings in the memory of the current process. Once the last instance of this mvIMPACT::acquire::FunctionInterface object is deleted all settings pushed on this stack will be deleted automatically.
[in] | storageFlags | The flags which define which information shall be stored and how this information shall be stored. |
|
inline |
Stores the current settings.
This function can be used to store the current settings either in an XML-file or (under Windows©) into the Registry. A setting contains all the values set for properties that control the overall way an image is acquired( e.g. the exposure time, etc.).
To store a setting in a file the mvIMPACT::acquire::sfFile should be specified as part of storageFlags. To store a setting in a platform specific location such as the Registry under Windows© mvIMPACT::acquire::sfNative should be specified. Both flags can be combined. In that case the same setting will be stored in a file AND in a platform specific location if these location differ (platform dependent!).
[in] | name | The name or the full path under which this setting shall be stored |
[in] | storageFlags | The flags which define which information shall be stored and how this information shall be stored. |
[in] | scope | Specifies where the information shall be stored. |
Stores the current settings under a default location.
Under Windows© this will be in the Registry. A setting contains all the values set for properties that control the overall way an image is acquired( e.g. the exposure time, etc.).
[in] | scope | Specifies where the information shall be stored. |
|
inline |
Updates the internal cache for request objects.
Calling this function isn't strictly necessary but doing so can speed up the initial execution of other functions after the request count has been modified using the mvIMPACT::acquire::SystemSettings::requestCount property. Not doing so will execute the work performed by this function when calling any of the following functions for the first time after modifying the request count: