Impact Acquire SDK .NET
Request Class Reference

Contains information about a captured buffer. More...

Inheritance diagram for Request:
[legend]

Public Member Functions

int attachUserBuffer (IntPtr pBuf, int bufSize)
 Convenience function to attach a user supplied buffer to a mv.impact.acquire.Request object.
 
int attachUserBuffer (IRequestBuffer buf)
 Convenience function to attach a user supplied buffer to a mv.impact.acquire.Request object.
 
int configure ()
 Sets a request into configuration mode.
 
int detachUserBuffer ()
 Convenience function to detach a user supplied buffer from a mv.impact.acquire.Request object.
 
BufferPart getBufferPart (int index)
 Returns a reference to a buffer part descriptor of this request.
 
PropertyI64 getChunkCounterValue (int index)
 Returns a 64 bit integer property (read-only) defining the selected counter value at the time of the internal frame start event for this request.
 
PropertyF getChunkGain (int index)
 Returns a floating point property (read-only) defining the selected gain value at the time of the internal frame start event for this request.
 
PropertyF getChunkGain (string name)
 Returns a floating point property (read-only) defining the selected gain value at the time of the internal frame start event for this request.
 
PropertyF getChunkTimerValue (int index)
 Returns a floating point property (read-only) defining the selected timer value at the time of the internal frame start event for this request.
 
DeviceComponentLocator getComponentLocator ()
 Returns a component locator for this request.
 
IEnumerable< TgetEnumerable< T > ()
 Returns an enumerator of a certain type that iterates through the collection.
 
IEnumerator< intGetEnumerator ()
 Returns an enumerator that iterates through the collection.
 
int getIMPACTImage (TImpactBufferFlag flags)
 Returns a mvIMPACT image buffer handle for the image associated with this request.
 
void restoreDefault ()
 Restores the default for every component of this collection.
 
int save (String fileName)
 Stores the image described by this request into a file.
 
int save (String fileName, TImageFileFormat format)
 Stores the image described by this request into a file.
 
int unlock ()
 Unlocks the request for the driver again.
 

Public Attributes

readonly PropertyI64 bufferSizeFilled = new PropertyI64()
 A 64bit integer property (read-only) containing the total amount of data (in bytes) that has been captured during the last capture operation.
 
readonly PropertyI64 chunkDynamicRangeMax = new PropertyI64()
 A 64 bit integer property (read-only) containing the maximum value of dynamic range of the image as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkDynamicRangeMin = new PropertyI64()
 A 64 bit integer property (read-only) containing the minimum value of dynamic range of the image as returned in the chunk data attached to the image.
 
readonly PropertyF chunkExposureTime = new PropertyF()
 A floating point property (read-only) containing the exposure time used to capture the image as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkHeight = new PropertyI64()
 A 64 bit integer property (read-only) containing the height of the image in pixels as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkLineStatusAll = new PropertyI64()
 A 64 bit integer property (read-only) containing the status of all I/O lines at the time of the internal frame start signal of the image as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkmvCustomIdentifier = new PropertyI64()
 A 64 bit integer property (read-only) containing the previously configured user defined identifier attached to the image.
 
readonly PropertyI64 chunkOffsetX = new PropertyI64()
 A 64 bit integer property (read-only) containing the X-offset of the image in pixels as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkOffsetY = new PropertyI64()
 A 64 bit integer property (read-only) containing the Y-offset of the image in pixels as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkPixelFormat = new PropertyI64()
 A 64 bit integer property (read-only) containing the pixel format of the image as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkSequencerSetActive = new PropertyI64()
 A 64-bit integer property (read-only) containing the index of the active set of the running sequencer use during the creation of this block of data.
 
readonly PropertyI64 chunkTimestamp = new PropertyI64()
 A 64 bit integer property (read-only) containing the timestamp value of the internal frame start signal of the image as returned in the chunk data attached to the image.
 
readonly PropertyI64 chunkWidth = new PropertyI64()
 A 64 bit integer property (read-only) containing the width of the image in pixels as returned in the chunk data attached to the image.
 
readonly EnumPropertyI< TBayerMosaicParityimageBayerMosaicParity = new EnumPropertyI<TBayerMosaicParity>()
 An enumerated integer property (read-only) containing the Bayer parity of this image.
 
readonly PropertyI imageBytesPerPixel = new PropertyI()
 An integer property (read-only) containing the number of bytes per pixel in this image.
 
readonly PropertyI imageChannelBitDepth = new PropertyI()
 An integer property (read-only) containing the number of effective bits stored in each channel belonging to the current image.
 
readonly PropertyI imageChannelCount = new PropertyI()
 An integer property (read-only) containing the number of channels this image consists of.
 
readonly PropertyS imageChannelDesc = new PropertyS()
 A string property (read-only) containing the string descriptors of each channel belonging to the current image.
 
readonly PropertyI imageChannelOffset = new PropertyI()
 An integer property (read-only) containing the offset (in bytes) to each channel belonging to the current image relative to the address contained in mv.impact.acquire.Request.imageData.
 
readonly PropertyPtr imageData = new PropertyPtr()
 A pointer property (read-only) containing the start address of the image data.
 
readonly PropertyPtr imageFooter = new PropertyPtr()
 A pointer property (read-only) containing the start address of the footer associated with this image.
 
readonly PropertyI imageFooterSize = new PropertyI()
 An integer property (read-only) containing the size (in bytes) of the footer associated with this image.
 
readonly PropertyI imageHeight = new PropertyI()
 An integer property (read-only) containing the height of the image in pixels.
 
readonly PropertyI imageHeightTotal = new PropertyI()
 An integer property (read-only) containing the total height of the image in pixels if this buffer is part of a larger image.
 
readonly PropertyI imageLinePitch = new PropertyI()
 An integer property (read-only) containing the offset (in bytes) to the next line of each channel belonging to the current image.
 
readonly EnumPropertyI< TRequestImageMemoryModeimageMemoryMode = new EnumPropertyI<TRequestImageMemoryMode>()
 An enumerated integer property (read-only) containing the memory mode used for this request.
 
readonly PropertyI imageOffsetX = new PropertyI()
 An integer property (read-only) containing the X-offset of the image in pixels.
 
readonly PropertyI imageOffsetY = new PropertyI()
 An integer property (read-only) containing the Y-offset of the image in pixels.
 
readonly EnumPropertyI< TImageBufferPixelFormatimagePixelFormat = new EnumPropertyI<TImageBufferPixelFormat>()
 An enumerated integer property (read-only) containing the pixel format of this image.
 
readonly PropertyI imagePixelPitch = new PropertyI()
 An integer property (read-only) containing the offset (in bytes) to the next pixel of the specified channel of this image.
 
readonly PropertyI imageSize = new PropertyI()
 An integer property (read-only) containing the size (in bytes) of the whole image.
 
readonly PropertyI imageWidth = new PropertyI()
 An integer property (read-only) containing the width of the image in pixels.
 
readonly PropertyI imageWidthTotal = new PropertyI()
 An integer property (read-only) containing the total width of the image in pixels if this buffer is part of a larger image.
 
readonly EnumPropertyI< TCameraOutputinfoCameraOutputUsed = new EnumPropertyI<TCameraOutput>()
 An enumerated integer property (read-only) containing the camera output used to transmit the image to the capture device.
 
readonly PropertyI infoExposeStart_us = new PropertyI()
 An integer property (read-only) containing a timestamp (in us) defining the time the device started the exposure of the image associated with this mv.impact.acquire.Request object.
 
readonly PropertyI infoExposeTime_us = new PropertyI()
 An integer property (read-only) containing the 'real' expose time (in us) used to generate this image.
 
readonly PropertyI64 infoFrameID = new PropertyI64()
 A 64 bit integer property (read-only) containing a frame identifier.
 
readonly PropertyI64 infoFrameNr = new PropertyI64()
 A 64 bit integer property (read-only, zero-based) containing the number of image requests processed since this driver instance has been opened.
 
readonly PropertyF infoGain_dB = new PropertyF()
 A float property (read-only) containing the gain(in dB) this image has been taken with.
 
readonly PropertyF infoImageAverage = new PropertyF()
 Currently unsupported.
 
readonly PropertyI infoIOStatesAtExposureEnd = new PropertyI()
 An integer property (read-only) containing the state of all the IO lines at the end of the frame exposure as a device specific bit field.
 
readonly PropertyI infoIOStatesAtExposureStart = new PropertyI()
 An integer property (read-only) containing the state of all the IO lines at the beginning of the frame exposure as a device specific bit field.
 
readonly PropertyI infoLineCounter = new PropertyI()
 An integer property (read-only) containing the number of lines since the last trigger event.
 
readonly PropertyF infoMissingData_pc = new PropertyF()
 A float property (read-only) containing the amount of data missing in the current image.
 
readonly PropertyI infoSettingUsed = new PropertyI()
 A enumerated integer property (read-only) containing the setting that was used for processing this request.
 
readonly PropertyI64 infoTimeStamp_us = new PropertyI64()
 A 64 bit integer property (read-only) containing a timestamp to define the exact time this image has been captured (usually either at exposure start or exposure end, depending on the device).
 
readonly PropertyI infoTransferDelay_us = new PropertyI()
 An integer property (read-only) containing the time the transaction of this image has been delayed (in us) because either the bus was blocked or the CPU was busy.
 
readonly PropertyI infoVideoChannel = new PropertyI()
 An integer property (read-only) containing the video input channel of the device this image has been acquired from.
 
readonly EnumPropertyI< TPayloadTypepayloadType = new EnumPropertyI<TPayloadType>()
 An enumerated integer property (read-only) defining the payload type of this request.
 
readonly EnumPropertyI< TRequestResultrequestResult = new EnumPropertyI<TRequestResult>()
 An enumerated integer property (read-only) defining the result of this request.
 
readonly EnumPropertyI< TRequestStaterequestState = new EnumPropertyI<TRequestState>()
 An enumerated integer property (read-only) defining the current state of this request.
 

Properties

RequestBitmapData bitmapData [get]
 Returns an access object to a System.Drawing.Bitmap instance for the image associated with this request if System.Drawing.Bitmap is available in the target environment.
 
int bufferPartCount [get]
 Returns the number of buffer parts currently associated with this request.
 
int chunkCounterCount [get]
 Returns the number of counter values that can be returned as part of the additional data of the buffer containing the request data.
 
int chunkGainCount [get]
 Returns the number of gain values that can be returned as part of the additional data of the buffer containing the request data.
 
int chunkTimerCount [get]
 Returns the number of timer values that can be returned as part of the additional data of the buffer containing the request data.
 
IEnumerable< ComponentcomponentEnumerable [get]
 Returns an enumerator that iterates through the collection.
 
IEnumerable< ComponentListcomponentListEnumerable [get]
 Returns an enumerator that iterates through all the mv.impact.acquire.ComponentList elements in the collection.
 
bool hasProcessingBeenSkipped [get]
 Checks if image processing that was set up for this request has been skipped for performance reasons.
 
int hObj [get]
 Returns a unique identifier for the component collection referenced by this object.
 
IEnumerable< ComponentimageProcessingResultsIterator [get]
 Returns an iterator for iterating inside the info/imageProcessingResults list of the request.
 
IEnumerable< ComponentinfoEnumerable [get]
 Returns an enumerator of a that iterates through the all the components in the Info list of the request.
 
Component infoIterator [get]
 Returns an iterator for iterating inside the info list of the request.
 
bool isOK [get]
 Convenience function to check if a request has been processed successfully.
 
String name [get]
 Returns the name associated with this request.
 
int number [get]
 Returns the number associated with this request.
 

Detailed Description

Contains information about a captured buffer.

This class provides access to all sorts of information about the captured buffer. Only Instances of mv.impact.acquire.FunctionInterface are allowed to create objects of mv.impact.acquire.Request. Consequently the only way to get access to a mv.impact.acquire.Request object is via a call to mv.impact.acquire.FunctionInterface.getRequest.

A mv.impact.acquire.Request represents an object used by the driver to fill its internal job queues. Whenever a buffer shall be captured a mv.impact.acquire.Request is sent to the driver and the hardware then tries to capture the desired buffer as fast as possible.

Requests are managed by the driver. The only thing the user needs to configure is the maximum number of requests he wants the driver to work with. To make sure a certain number of requests are available, the property mv.impact.acquire.SystemSettings.requestCount can be used. This can be useful for time critical applications where the hardware can capture buffers in the background while the PC performs other tasks. In that case it's necessary to make sure that the request queue never runs low to ensure lossless data acquisition.

Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousCaptureAllDevices.cs, ContinuousSaveImage.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

Member Function Documentation

◆ attachUserBuffer() [1/2]

int attachUserBuffer ( IntPtr pBuf,
int bufSize )
inline

Convenience function to attach a user supplied buffer to a mv.impact.acquire.Request object.

This function just provides a nicer way to attach a user supplied buffer to a mv.impact.acquire.Request.

It e.g. makes it possible to write code like this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0
A template class to represent 32 bit integer properties and 32 bit enumerated integer properties.
Definition EnumPropertyI.cs:61
Contains information about a captured buffer.
Definition Request.cs:77

Instead if this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0
if( (TDMR_ERROR)pRequest.configure() == TDMR_ERROR.DMR_NO_ERROR )
{
pRequest.imageMemoryMode.write( TRequestImageMemoryMode.rimmUser );
pRequest.unlock();
}
EnumPropertyI< T > write(T value)
Writes one value to the property.
Definition EnumPropertyI.cs:449
TRequestImageMemoryMode
Defines valid image modes for request objects.
Definition mvDriverBaseEnums.cs:4208
TDMR_ERROR
Errors reported by the device manager.
Definition mvDriverBaseEnums.cs:2375

To find out more about capturing to user supplied buffers please refer to the example CaptureToUserMemory.cs and have a look at the documentation of the function mv.impact.acquire.Request.configure

See also
mv.impact.acquire.Request.detachUserBuffer,
mv.impact.acquire.FunctionInterface.imageRequestUnlock,
mv.impact.acquire.Request.unlock,
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure
Returns

Parameters
[in]pBufA pointer to a user supplied buffer
[in]bufSizeThe size of the user supplied buffer
Examples
CaptureToUserMemory.cs.

◆ attachUserBuffer() [2/2]

int attachUserBuffer ( IRequestBuffer buf)
inline

Convenience function to attach a user supplied buffer to a mv.impact.acquire.Request object.

This function just provides a nicer way to attach a user supplied buffer to a mv.impact.acquire.Request.

It e.g. makes it possible to write code like this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0

Instead if this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0
if( (TDMR_ERROR)pRequest.configure() == TDMR_ERROR.DMR_NO_ERROR )
{
pRequest.imageMemoryMode.write( TRequestImageMemoryMode.rimmUser );
pRequest.unlock();
}

To find out more about capturing to user supplied buffers using this function please refer to the example ContinuousCaptureSimple.cs and have a look at the documentation of the function mv.impact.acquire.Request.configure

See also
mv.impact.acquire.Request.detachUserBuffer,
mv.impact.acquire.FunctionInterface.imageRequestUnlock,
mv.impact.acquire.Request.unlock,
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure
Returns

Parameters
[in]bufAn a pointer to an object of type mv.impact.acquire.helper.IRequestBuffer

◆ configure()

int configure ( )
inline

Sets a request into configuration mode.

In configuration mode certain properties like mv.impact.acquire.Request.imageData, mv.impact.acquire.Request.imageSize, mv.impact.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 mv.impact.acquire.Request objects available the mv.impact.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.

Note
Instead of calling this function directly for most cases it is much more convenient to use the functions mv.impact.acquire.Request.attachUserBuffer and mv.impact.acquire.Request.detachUserBuffer instead.

User supplied buffers must follow the alignment and size requirements reported by versions of the function mv.impact.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

Note
The address passed to the request object must be aligned already!

Example

Request pRequest = fi.getRequest( 0 );
// the buffer assigned to the request object must be aligned accordingly
// the size of the user supplied buffer MUST NOT include the additional size
// caused by the alignment
if( (TDMR_ERROR)pRequest.attachUserBuffer( getAlignedMemoryPtr(), getAlignedMemorySize() ) ) == TDMR_ERROR.DMR_NO_ERROR )
{
irc.requestToUse.write( 0 ); // use the buffer just configured for the next image request
// now the next image will be captured into the user supplied memory
fi.imageRequestSingle( irc ); // this will send request '0' to the driver
// wait for the buffer. Once it has been returned by the driver AND the user buffer shall no
// longer be used call
if( (TDMR_ERROR)pRequest.detachUserBuffer() != TDMR_ERROR.DMR_NO_ERROR )
{
// handle error
}
// now this request will use internal memory again.
}
else
{
// handle error
}
This class and its functions represent an actual device detected by this interface in the current sys...
Definition Device.cs:91
The function interface to devices supported by this interface.
Definition FunctionInterface.cs:21
A helper class to control the way an image request will be processed.
Definition ImageRequestControl.cs:8
Note
A request that is in configuration mode can't be sent to the driver for acquisition until mv.impact.acquire.Request.unlock or mv.impact.acquire.FunctionInterface.imageRequestUnlock has been called again. By using mv.impact.acquire.Request.attachUserBuffer and mv.impact.acquire.Request.detachUserBuffer this locking and unlocking is done internally thus the application does not need to worry about this.
See also
mv.impact.acquire.FunctionInterface.imageRequestSingle,
mv.impact.acquire.Request.attachUserBuffer,
mv.impact.acquire.Request.detachUserBuffer,
mv.impact.acquire.Request.unlock,
mv.impact.acquire.FunctionInterface.imageRequestUnlock,
mv.impact.acquire.FunctionInterface.imageRequestWaitFor,
mv.impact.acquire.FunctionInterface.imageRequestReset
Returns

◆ detachUserBuffer()

int detachUserBuffer ( )
inline

Convenience function to detach a user supplied buffer from a mv.impact.acquire.Request object.

This function just provides a nicer way to detach a user supplied buffer from a mv.impact.acquire.Request.

It e.g. makes it possible to write code like this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0
pRequest.detachUserBuffer();

Instead if this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
Request pRequest = fi.getRequest( 0 ); // get access to request 0
if( (TDMR_ERROR)pRequest.configure() == TDMR_ERROR.DMR_NO_ERROR )
{
pRequest.imageMemoryMode.write( TRequestImageMemoryMode.rimmAuto );
pRequest.unlock();
}

To find out more about capturing to user supplied buffers please refer to the example CaptureToUserMemory.cs and have a look at the documentation of the function mv.impact.acquire.Request.configure

See also
mv.impact.acquire.Request.attachUserBuffer,
mv.impact.acquire.FunctionInterface.imageRequestUnlock,
mv.impact.acquire.Request.unlock,
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure
Returns

◆ getBufferPart()

BufferPart getBufferPart ( int index)
inline

Returns a reference to a buffer part descriptor of this request.

This function returns a reference to a mv.impact.acquire.BufferPart at index index associated with this mv.impact.acquire.Request.

Attention
Please do NEVER work with old references to this class. So do NOT store this reference in some variable to use it for the evaluation of the next mv.impact.acquire.Request object as well, as this might not work because the buffer layout might have changed. Whenever mv.impact.acquire.Request.getBufferPart is called the function will make sure that the data in the returned structure is up to date while when working with an old reference to the mv.impact.acquire.BufferPart structure the containing data might refer to a previous result or worse an invalid memory location. This reference will remain valid until an application calls mv.impact.acquire.Request.unlock for the corresponding request.
See also
mv.impact.acquire.Request.bufferPartCount
Multi-Part Format
Since
2.20.0
Returns
A reference to the buffer part defined by index
Parameters
[in]indexThe index of the buffer part to return

◆ getChunkCounterValue()

PropertyI64 getChunkCounterValue ( int index)
inline

Returns a 64 bit integer property (read-only) defining the selected counter value at the time of the internal frame start event for this request.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.0.15
Parameters
[in]indexThe index of the counter to return

◆ getChunkGain() [1/2]

PropertyF getChunkGain ( int index)
inline

Returns a floating point property (read-only) defining the selected gain value at the time of the internal frame start event for this request.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.17.3
Parameters
[in]indexThe index of the gain to return

◆ getChunkGain() [2/2]

PropertyF getChunkGain ( string name)
inline

Returns a floating point property (read-only) defining the selected gain value at the time of the internal frame start event for this request.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.17.3
Parameters
[in]nameThe index of the gain to return

◆ getChunkTimerValue()

PropertyF getChunkTimerValue ( int index)
inline

Returns a floating point property (read-only) defining the selected timer value at the time of the internal frame start event for this request.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.0.15
Parameters
[in]indexThe index of the timer to return

◆ getComponentLocator()

DeviceComponentLocator getComponentLocator ( )
inline

Returns a component locator for this request.

This will allow to write custom feature bind operations.

Returns
A component locator for this request.

◆ getEnumerable< T >()

IEnumerable< T > getEnumerable< T > ( )
inlineinherited

Returns an enumerator of a certain type that iterates through the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (Property c in info.getEnumerable<Property>())
{
}
A class to query various general information about the device, its driver and other information.
Definition Info.cs:10
A base class for properties.
Definition Property.cs:109

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ GetEnumerator()

IEnumerator< int > GetEnumerator ( )
inlineinherited

Returns an enumerator that iterates through the collection.

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ getIMPACTImage()

int getIMPACTImage ( TImpactBufferFlag flags)
inline

Returns a mvIMPACT image buffer handle for the image associated with this request.

Valid values for flags are defined by the enumeration mv.impact.acquire.TImpactBufferFlag.

The integer returned by this function can be passed to some of the constructors of mvIMPACT_NET.Image to create an image object that can be used in connection with the mvIMPACT image processing library efficiently.

Attention
Depending on the value of flags, the image memory of the original image and the mvIMPACT buffer might be the same. This can have positive impact on the overall performance, but requires the mv.impact.acquire.Request object to remain locked until the mvIMPACT_NET.Image instance is no longer used!
Note
Calling this function will only work, if the mvIMPACT SDK is installed on the system and all the required libraries belonging to mvIMPACT Base can be located.

Using the function work like this:

public void fn()
{
// This call is fast, as it uses the request memory to create the IMPACT image. However
// the IMPACT image will become invalid as soon as the request buffer is unlocked via
// fi.imageRequestUnlock( requestNr );
Image anImage = new Image(pRequest.getIMPACTImage(TImpactBufferFlag.ibfUseRequestMemory));
// This is also possible, but essentially the same as the constructor call from above:
Image anotherImage = new Image(pRequest.getIMPACTImage(TImpactBufferFlag.ibfUseRequestMemory), true);
// This should NOT be used as it will create a memory leak. Buffers will not be freed by the garbage
// collector and not by the interface:
Image yetAnotherImage = new Image(pRequest.getIMPACTImage(TImpactBufferFlag.ibfNone), false);
// This call would be slow as it copies the image data. This image however remains valid even when the
// request has been unlocked again thus might be a way to go depending on the application.
Image andAnotherImage = new Image(pRequest.getIMPACTImage(TImpactBufferFlag.ibfNone));
}
TImpactBufferFlag
Flags to define the way an mvIMPACT buffer is created and handled.
Definition Request.cs:15
This namespace contains classes and functions belonging to the image acquisition module of this SDK.
Definition Enumerations.cs:2
Since
2.4.2
Returns
An integer, that represents a valid handle, that can be fed into mvIMPACT_NET.Image constructors accepting an integer as a valid buffer handle for the mvIMPACT image processing library
Parameters
[in]flagsFlags that influence the way the buffer is created internally

◆ restoreDefault()

void restoreDefault ( )
inlineinherited

Restores the default for every component of this collection.

Calling this function will restore the default value for every component belonging to this collection.

Note
The caller must have the right to modify the component. Otherwise an exception will be thrown.

◆ save() [1/2]

int save ( String fileName)
inline

Stores the image described by this request into a file.

This function stores the image described by this request into a file.

Note
Internally The FreeImage is used for this operation. If the library cannot be located in a supported version on the host system calling this function will fail.
Since
2.23.0
Returns
Parameters
[in]fileNameThe full path of the file to create.
Examples
ContinuousSaveImage.cs.

◆ save() [2/2]

int save ( String fileName,
TImageFileFormat format )
inline

Stores the image described by this request into a file.

This function stores the image described by this request into a file.

Note
Internally The FreeImage is used for this operation. If the library cannot be located in a supported version on the host system calling this function will fail.
Since
2.23.0
Returns
Parameters
[in]fileNameThe full path of the file to create.
[in]formatThe format of the file to be created. If this parameter is set to mv.impact.acquire.TImageFileFormat.iffAuto make sure to specify a proper file extension.

◆ unlock()

int unlock ( )
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 mv.impact.acquire.FunctionInterface.imageRequestWaitFor. No new image will be captured into the same buffer until the user unlocks the buffer again by calling mv.impact.acquire.Request.unlock or mv.impact.acquire.FunctionInterface.imageRequestUnlock.

Note
After unlocking a request it is no longer guaranteed that the memory once referenced by the request and the image buffer belonging to it stays valid, so do NEVER try to access memory belonging to an unlocked request object. If you need to copy the image buffer or modify it in any other way, do everything you have to do BEFORE calling this function!
See also
mv.impact.acquire.FunctionInterface.imageRequestReset,
mv.impact.acquire.FunctionInterface.imageRequestSingle,
mv.impact.acquire.FunctionInterface.imageRequestWaitFor
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure
Returns
Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousSaveImage.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

Member Data Documentation

◆ bufferSizeFilled

readonly PropertyI64 bufferSizeFilled = new PropertyI64()

A 64bit integer property (read-only) containing the total amount of data (in bytes) that has been captured during the last capture operation.

In contrast to mv.impact.acquire.Request.imageSize, this value might be smaller than the original amount of memory, that has been allocated upfront. This e.g. might be true for a JPEG transmission of a triggered linescan application where mv.impact.acquire.Request.imageSize would contain the maximum amount of data that could be captured while this value holds the number of bytes actually captured.

This value in connection with mv.impact.acquire.Request.imageData is sufficient to copy the complete image without having any additional information about it.

See also
mv.impact.acquire.Request.imageData,
mv.impact.acquire.Request.imageSize,
mv.impact.acquire.Request.imageFooter,
mv.impact.acquire.Request.imageFooterSize
Since
3.3.0

◆ chunkDynamicRangeMax

readonly PropertyI64 chunkDynamicRangeMax = new PropertyI64()

A 64 bit integer property (read-only) containing the maximum value of dynamic range of the image as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkDynamicRangeMin

readonly PropertyI64 chunkDynamicRangeMin = new PropertyI64()

A 64 bit integer property (read-only) containing the minimum value of dynamic range of the image as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkExposureTime

readonly PropertyF chunkExposureTime = new PropertyF()

A floating point property (read-only) containing the exposure time used to capture the image as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.5.16

◆ chunkHeight

A 64 bit integer property (read-only) containing the height of the image in pixels as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkLineStatusAll

readonly PropertyI64 chunkLineStatusAll = new PropertyI64()

A 64 bit integer property (read-only) containing the status of all I/O lines at the time of the internal frame start signal of the image as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkmvCustomIdentifier

readonly PropertyI64 chunkmvCustomIdentifier = new PropertyI64()

A 64 bit integer property (read-only) containing the previously configured user defined identifier attached to the image.

This identifier can be specified by some other functions belonging to this SDK. If not specified this value will be 0.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.17.3

◆ chunkOffsetX

readonly PropertyI64 chunkOffsetX = new PropertyI64()

A 64 bit integer property (read-only) containing the X-offset of the image in pixels as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkOffsetY

readonly PropertyI64 chunkOffsetY = new PropertyI64()

A 64 bit integer property (read-only) containing the Y-offset of the image in pixels as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkPixelFormat

readonly PropertyI64 chunkPixelFormat = new PropertyI64()

A 64 bit integer property (read-only) containing the pixel format of the image as returned in the chunk data attached to the image.

This will NOT be a valid Impact Acquire pixel format but e.g. a GigE Vision pixel format or something else.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkSequencerSetActive

readonly PropertyI64 chunkSequencerSetActive = new PropertyI64()

A 64-bit integer property (read-only) containing the index of the active set of the running sequencer use during the creation of this block of data.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.12.3

◆ chunkTimestamp

readonly PropertyI64 chunkTimestamp = new PropertyI64()

A 64 bit integer property (read-only) containing the timestamp value of the internal frame start signal of the image as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ chunkWidth

A 64 bit integer property (read-only) containing the width of the image in pixels as returned in the chunk data attached to the image.

Note
For additional information about the chunk data format please refer to Chunk Data Format.

◆ imageBayerMosaicParity

An enumerated integer property (read-only) containing the Bayer parity of this image.

If the current image does not contain Bayer data, this value will be mv.impact.acquire.TBayerMosaicParity.bmpUndefined.

Valid values for this property are defined by the enumeration mv.impact.acquire.TBayerMosaicParity.

◆ imageBytesPerPixel

◆ imageChannelBitDepth

readonly PropertyI imageChannelBitDepth = new PropertyI()

An integer property (read-only) containing the number of effective bits stored in each channel belonging to the current image.

Note
This property will store imageChannelCount values. These can be queried one by one using the index parameter of the function mv.impact.acquire.PropertyI.read() or in a single call by using the overloaded read function accepting a reference to a vector.

◆ imageChannelCount

readonly PropertyI imageChannelCount = new PropertyI()

An integer property (read-only) containing the number of channels this image consists of.

For an RGB image this value e.g. would be 3. This value also defines how many parameters are stored by the properties mv.impact.acquire.Request.imagePixelPitch,
mv.impact.acquire.Request.imageLinePitch,
mv.impact.acquire.Request.imageChannelBitDepth,
mv.impact.acquire.Request.imageChannelDesc and
mv.impact.acquire.Request.imageChannelOffset.

If e.g. the channel count is 3 a call like pRequest->imageChannelOffset.read( 2 ) would return the channel offset of channel 3 (as calls to the read functions of properties are '0' based).

◆ imageChannelDesc

readonly PropertyS imageChannelDesc = new PropertyS()

A string property (read-only) containing the string descriptors of each channel belonging to the current image.

Note
This property will store imageChannelCount values. These can be queried one by one using the index parameter of the function mv.impact.acquire.PropertyS.read() or in a single call by using the overloaded read function accepting a reference to a vector.

For an RGB image this property e.g. might contain three values "R", "G" and "B".

Example

int channelCount = pRequest.imageChannelCount.read();
for( int i=0; i<channelCount; i++ )
{
Console.WriteLine( "channel[{0}]: {1}", i, pRequest.imageChannelDesc.read( i ) );
}
T read()
Reads a value from a property.
Definition EnumPropertyI.cs:342

◆ imageChannelOffset

readonly PropertyI imageChannelOffset = new PropertyI()

An integer property (read-only) containing the offset (in bytes) to each channel belonging to the current image relative to the address contained in mv.impact.acquire.Request.imageData.

Note
This property will store imageChannelCount values. These can be queried one by one using the index parameter of the function mv.impact.acquire.PropertyI.read() or in a single call by using the overloaded read function accepting a reference to a vector.

◆ imageData

A pointer property (read-only) containing the start address of the image data.

This address in connection with mv.impact.acquire.Request.imageSize is sufficient to copy the complete image without having any additional information about it. Sometimes however mv.impact.acquire.Request.bufferSizeFilled might be more suitable for this.

Example

byte[] pBuf = new byte[pRequest.imageSize.read()];
System.Runtime.InteropServices.Marshal.Copy(pRequest.imageData.read(), pBuf, 0, pRequest.imageSize.read());
Note
It's not always necessary to copy the image data! Each image buffer is an integral part of the mv.impact.acquire.Request object returned to the user by a call to the corresponding 'waitFor' function offered by the interface. The data in this buffer remains valid until the user either unlocks the request buffer or closes the mv.impact.acquire.Device again.
By unlocking the mv.impact.acquire.Request, the user informs the driver that this mv.impact.acquire.Request and the image buffer belonging to that mv.impact.acquire.Request is no longer needed by the user. The driver then queues this mv.impact.acquire.Request for capturing image data into it once again. However, once a mv.impact.acquire.Request has been returned to the user, its image buffer can't be overwritten by the driver! Therefore the user can work with, modify, store or copy the data safely until he unlocks the mv.impact.acquire.Request again.
This property will become writeable if this request is in configuration mode.
See also
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure,
mv.impact.acquire.Request.imageSize,
mv.impact.acquire.Request.bufferSizeFilled,
mv.impact.acquire.Request.imageFooterSize
Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousCaptureAllDevices.cs, ContinuousCaptureSimple.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

◆ imageFooter

A pointer property (read-only) containing the start address of the footer associated with this image.

A footer may contain additional data like e.g. information about the image (e.g. the exposure time used for this image). If this property contains the value '0' no footer is attached to this image.

Note
In general it is not necessary to access footer data. Sometime e.g. when the hardware already does some image pre-processing a footer containing additional information about the image data might be attached to the image. In this case some additional information about the structure of the footer might be needed as well.

◆ imageFooterSize

readonly PropertyI imageFooterSize = new PropertyI()

An integer property (read-only) containing the size (in bytes) of the footer associated with this image.

If this property contains the value '0' no footer is attached to this image.

◆ imageHeight

◆ imageHeightTotal

readonly PropertyI imageHeightTotal = new PropertyI()

An integer property (read-only) containing the total height of the image in pixels if this buffer is part of a larger image.

Note
This feature will be supported by devices using a Impact Acquire driver greater or equal version 1.11.50. Not every device driver will be capable of dealing with multiple buffers forming a single image. If a device driver can not deliver parts of a larger image, then this property will always contain the same value as returned by mv.impact.acquire.Request.imageHeight.

◆ imageLinePitch

readonly PropertyI imageLinePitch = new PropertyI()

An integer property (read-only) containing the offset (in bytes) to the next line of each channel belonging to the current image.

Note
This property will store imageChannelCount values. These can be queried one by one using the index parameter of the function mv.impact.acquire.PropertyI.read() or in a single call by using the overloaded read function accepting a reference to a vector.
Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousCaptureAllDevices.cs, ContinuousCaptureSimple.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

◆ imageMemoryMode

An enumerated integer property (read-only) containing the memory mode used for this request.

Valid values for this property are defined by the enumeration mv.impact.acquire.TRequestImageMemoryMode.

Note
This property will become writeable if this request is in configuration mode.
See also
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure

◆ imageOffsetX

readonly PropertyI imageOffsetX = new PropertyI()

An integer property (read-only) containing the X-offset of the image in pixels.

Note
This feature will be supported by devices using a Impact Acquire driver greater or equal version 1.10.92.

◆ imageOffsetY

readonly PropertyI imageOffsetY = new PropertyI()

An integer property (read-only) containing the Y-offset of the image in pixels.

Note
This feature will be supported by devices using a Impact Acquire driver greater or equal version 1.10.92.

◆ imagePixelFormat

An enumerated integer property (read-only) containing the pixel format of this image.

This might be important, when the image data needs to be processed or stored in a file or maybe even if the image shall be displayed.

Valid values for this property are defined by the enumeration mv.impact.acquire.TImageBufferPixelFormat.

Examples
ContinuousCaptureSimple.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

◆ imagePixelPitch

readonly PropertyI imagePixelPitch = new PropertyI()

An integer property (read-only) containing the offset (in bytes) to the next pixel of the specified channel of this image.

Note
This property will store imageChannelCount values. These can be queried one by one using the index parameter of the function mv.impact.acquire.PropertyI.read() or in a single call by using the overloaded read function accepting a reference to a vector.

◆ imageSize

An integer property (read-only) containing the size (in bytes) of the whole image.

This value in connection with mv.impact.acquire.Request.imageData is sufficient to copy the complete image without having any additional information about it. Sometimes however mv.impact.acquire.Request.bufferSizeFilled might be more suitable for this.

Note
This property will become writeable if this request is in configuration mode.
See also
mv.impact.acquire.FunctionInterface.imageRequestConfigure,
mv.impact.acquire.Request.configure,
mv.impact.acquire.Request.imageData,
mv.impact.acquire.Request.bufferSizeFilled,
mv.impact.acquire.Request.imageFooterSize

◆ imageWidth

◆ imageWidthTotal

readonly PropertyI imageWidthTotal = new PropertyI()

An integer property (read-only) containing the total width of the image in pixels if this buffer is part of a larger image.

Note
This feature will be supported by devices using a Impact Acquire driver greater or equal version 1.11.50. Not every device driver will be capable of dealing with multiple buffers forming a single image. If a device driver can not deliver parts of a larger image, then this property will always contain the same value as returned by mv.impact.acquire.Request.imageWidth.

◆ infoCameraOutputUsed

An enumerated integer property (read-only) containing the camera output used to transmit the image to the capture device.

Valid values for this property are defined by the enumeration mv.impact.acquire.TCameraOutput.

Note
This property is not supported by every device. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ infoExposeStart_us

readonly PropertyI infoExposeStart_us = new PropertyI()

An integer property (read-only) containing a timestamp (in us) defining the time the device started the exposure of the image associated with this mv.impact.acquire.Request object.

This value will stay 0 if nothing is known about the time the exposure did start. In such a case the mv.impact.acquire.Request.infoTimeStamp_us property should be used instead.

◆ infoExposeTime_us

readonly PropertyI infoExposeTime_us = new PropertyI()

An integer property (read-only) containing the 'real' expose time (in us) used to generate this image.

This might differ slightly from the value selected by the user via the corresponding exposure property depending on the precision available for the device or the connected camera.

Note
When working with the mv.impact.acquire.TDeviceInterfaceLayout.dilGenICam this value will reflect the last value of the corresponding device property when it was written thus is a cached copy of the value that has been set by the application. For various operation modes this might NOT be the value actually used by the device for taking the image described by this request object. For example when AEC (exposureAuto) is active or the device is operated in a special sequencer mode the value of this property might be incorrect. When precise information about this value is needed it is recommended to work in chunk mode and use the gain provided as chunk information instead.
See also
mv.impact.acquire.Device.interfaceLayout,
mv.impact.acquire.GenICam.ChunkDataControl,
mv.impact.acquire.GenICam.AcquisitionControl.exposureAuto,
mv.impact.acquire.Request.getChunkExposureTime

◆ infoFrameID

A 64 bit integer property (read-only) containing a frame identifier.

This parameter is returned as part of the mv.impact.acquire.Request. It is used to associate a certain image with a unique identifier.

When an mv.impact.acquire.RTCtrProgramStep instruction of the type mv.impact.acquire.TRTProgOpCodes.rtctrlProgTriggerSet is executed, the frameID is set to the value of the property FrameID of a corresponding mv.impact.acquire.RTCtrProgramStep if the HRTC is used and any program step executes the setting of the ID.

If a device (e.g. a digital camera) supports the transmission of a unique identifier for an image, this property will reflect the identifier as transmitted by the device.

Note
mvBlueFOX and mvHYPERION specific: This property will only contain meaningful data if the device supports at least one HRTC and a program is running and writing data to the property OR if a device supports the transmission of a unique identifier for an image. Currently HRTC programs are supported by mvBlueFOX and mvHYPERION devices.
GigE Vision and USB3 Vision specific: This is the property where the so called block ID will be stored which is a unique identifier for each frame that will be transferred by the device as part of each frame as defined by the standard.
  • For GigE Vision 1.x compliant devices, this will be a 16 bit counter that will be incremented with every data block(e.g. an image or chunk data) transmitted by the device where '0' is a reserved value, which will never be used, thus values like this will be transmitted in a round robin scheme: 1, 2, 3, ..., 65535, 1, 2, ...
  • For devices complying with version 2.0 and greater of the GigE Vision specification, this will be a 64 bit counter that will be incremented with every data block(e.g. an image or chunk data) transmitted by the device where '0' is a reserved value, which will never be used, thus values like this will be transmitted in a round robin scheme: 1, 2, 3, ..., ((2^64)-1), 1, 2, ...
  • For USB3 Vision compliant devices, this will be a 64 bit counter that will be incremented with every data block(e.g. an image or chunk data) transmitted by the device, thus values like this will be transmitted in a round robin scheme: 0, 1, 2, ..., ((2^64)-1), 0, 1, ...

Please note that due to the nature of mv.impact.acquire.TAcquisitionMode.amContinuous there might be gaps between the last image of a continuous stream and the first image of the next continuous stream if the device is stopped or re-programmed in between.

Examples
ContinuousSaveImage.cs.

◆ infoFrameNr

A 64 bit integer property (read-only, zero-based) containing the number of image requests processed since this driver instance has been opened.

This counter is incremented regardless of the result this request is returned with thus also e.g. if a request did time out, was aborted(e.g. due to a call to mv.impact.acquire.FunctionInterface.imageRequestReset or mv.impact.acquire.FunctionInterface.acquisitionStop) or the data was not completely captured. So if a mv.impact.acquire.Request object contains the value 6 here, 6 requests have been processed before this one(the first request would contain the value 0) This value is reset to 0 only if the current driver instance is closed.

Examples
ContinuousSaveImage.cs.

◆ infoGain_dB

readonly PropertyF infoGain_dB = new PropertyF()

A float property (read-only) containing the gain(in dB) this image has been taken with.

Note
When working with the mv.impact.acquire.TDeviceInterfaceLayout.dilGenICam this value will reflect the last value of the corresponding device property when it was written thus is a cached copy of the value that has been set by the application. For various operation modes this might NOT be the value actually used by the device for taking the image described by this request object. For example when AGC (gainAuto) is active or the device is operated in a special sequencer mode the value of this property might be incorrect. When precise information about this value is needed it is recommended to work in chunk mode and use the gain provided as chunk information instead.
See also
mv.impact.acquire.Device.interfaceLayout,
mv.impact.acquire.GenICam.ChunkDataControl,
mv.impact.acquire.GenICam.AnalogControl.gainAuto,
mv.impact.acquire.Request.getChunkGainCount,
mv.impact.acquire.Request.getChunkGain

◆ infoImageAverage

readonly PropertyF infoImageAverage = new PropertyF()

Currently unsupported.

◆ infoIOStatesAtExposureEnd

readonly PropertyI infoIOStatesAtExposureEnd = new PropertyI()

An integer property (read-only) containing the state of all the IO lines at the end of the frame exposure as a device specific bit field.

See mv.impact.acquire.Request.infoIOStatesAtExposureStart for details on how to interpret the data.

Note
This property is not supported by every device. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ infoIOStatesAtExposureStart

readonly PropertyI infoIOStatesAtExposureStart = new PropertyI()

An integer property (read-only) containing the state of all the IO lines at the beginning of the frame exposure as a device specific bit field.

The following table documents which bit in this property represents the state of which digital I/O for mvBlueFOX devices:

bitIO
0in 0
1in 1
2in 2(if available)
3in 3(if available)
4out 0
5out 1
6out 2(if available)
7out 3(if available)
Attention
This feature is currently only available for mvBlueFOX-MLC devices!

Example

using System.Text;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
int bitCount = 32;
for (int i = 0; i < bitCount; i++)
{
result.Append(((value & (1 << (bitCount - 1 - i))) != 0 ? "1" : "0"));
}
return result.ToString();
}
//-----------------------------------------------------------------------------
public void printIOStateOfAValidRequest(Request pRequest)
//-----------------------------------------------------------------------------
{
if (pRequest.infoIOStatesAtExposureStart.isValid)
{
Console.WriteLine("{0}: {1}", pRequest.infoIOStatesAtExposureStart.name, decToBinString(pRequest.infoIOStatesAtExposureStart.read()));
}
}
override String ToString()
Reads data from this property as a string.
Definition Property.cs:287
Definition Enumerations.cs:2
Definition Enumerations.cs:2
Note
This property is not supported by every device. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ infoLineCounter

readonly PropertyI infoLineCounter = new PropertyI()

An integer property (read-only) containing the number of lines since the last trigger event.

Will contain

  • the number of lines since last trigger event of the first line of the snap if line counting is enabled
  • -1 otherwise
Note
This property is not supported by every device. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ infoMissingData_pc

readonly PropertyF infoMissingData_pc = new PropertyF()

A float property (read-only) containing the amount of data missing in the current image.

The value of this property will be 0 almost always. However if a device can detect blocks of missing data and an image request has returned with mv.impact.acquire.TRequestResult.rrFrameIncomplete to indicate that not all the data has been captured, this property will contain the amount of data missing in percent.

◆ infoSettingUsed

readonly PropertyI infoSettingUsed = new PropertyI()

A enumerated integer property (read-only) containing the setting that was used for processing this request.

The string representation will be a valid setting name, the integer representation is a handle to the mv.impact.acquire.ComponentList containing the setting.

◆ infoTimeStamp_us

readonly PropertyI64 infoTimeStamp_us = new PropertyI64()

A 64 bit integer property (read-only) containing a timestamp to define the exact time this image has been captured (usually either at exposure start or exposure end, depending on the device).

mvBlueFOX specific: The counter of the timestamp starts when the camera gets initialized. It is measured in us.

◆ infoTransferDelay_us

readonly PropertyI infoTransferDelay_us = new PropertyI()

An integer property (read-only) containing the time the transaction of this image has been delayed (in us) because either the bus was blocked or the CPU was busy.

Normally this value will be 0. A value larger than 0 indicates that the system can't manage the current load.

Note
This property is not supported by every device. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ infoVideoChannel

readonly PropertyI infoVideoChannel = new PropertyI()

An integer property (read-only) containing the video input channel of the device this image has been acquired from.

Note
This property is not supported by every device and will only be available if the device has more than one input channel. Therefore always call the function mv.impact.acquire.Component.isValid to check if this property is available or not.

◆ payloadType

An enumerated integer property (read-only) defining the payload type of this request.

This parameter indicates the current payload type of this request.

Valid values for this property are defined by the enumeration mv.impact.acquire.TPayloadType.

Since
3.2.0

◆ requestResult

An enumerated integer property (read-only) defining the result of this request.

This parameter indicates whether a previous image acquisition has been successful or not.

Valid values for this property are defined by the enumeration mv.impact.acquire.TRequestResult.

Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousCaptureAllDevices.cs, ContinuousCaptureSimple.cs, ContinuousSaveImage.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

◆ requestState

An enumerated integer property (read-only) defining the current state of this request.

This parameter indicates the current state of this request. A mv.impact.acquire.Request e.g. can currently be idle. This would mean that it is currently not used for image acquisition. Also a mv.impact.acquire.Request can be in 'Capturing' state, which means it is currently processed by the driver.

Valid values for this property are defined by the enumeration mv.impact.acquire.TRequestState.

Property Documentation

◆ bitmapData

RequestBitmapData bitmapData
get

Returns an access object to a System.Drawing.Bitmap instance for the image associated with this request if System.Drawing.Bitmap is available in the target environment.

Attention
The image memory used by the mv.impact.acquire.Request and the System.Drawing.Bitmap instance will be the same for performance reasons (to avoid an expensive copy operation). This has positive impact on the overall performance, but requires the mv.impact.acquire.Request object to remain locked until the System.Drawing.Bitmap instance is no longer used!
Note
As the pixel formats used by Impact Acquire and those used by the .NET framework differ significantly, only a sub-set of formats is supported for this operation. If Impact Acquire pixel formats are used that can not be mapped to a System.Drawing.Imaging.PixelFormat, calling this function will raise an instance of System.ArgumentException. For a detailed list of supported pixel formats refer to the documentation of the function mv.impact.acquire.TImageBufferPixelFormatExtension.asSystemDrawingImagingPixelFormat. Some pixel formats are also not supported on every platform. Using a pixel format that is defined by the .NET framework but not supported on the current platform will result in a System.NotImplementedException
Attention
For the .NET Standard version of this library, this property is only supported if the package System.Drawing.Common is installed.

All other restrictions that apply when creating a System.Drawing.Bitmap will apply as well except one:

  • .NET (or Windows in general) requires the pitch (or stride as it is called under .NET) to be a multiple of 4 when running under Microsoft Windows®. This interface will silently copy image buffers that do not fulfill this requirement so whenever the pitch is not a multiple of 4, a slight decrease in performance can be observed.

Please refer to the documentation of System.Drawing.Bitmap for additional details.

Attention
See also
mv.impact.acquire.TImageBufferPixelFormatExtension.asSystemDrawingImagingPixelFormat
Efficiently create System.Drawing.Bitmap instances
Since
2.5.1
Returns
A new instance of System.Drawing.Bitmap referencing the image memory associated with this mv.impact.acquire.Request object.
Examples
SingleCaptureStorage.cs.

◆ bufferPartCount

int bufferPartCount
get

Returns the number of buffer parts currently associated with this request.

Certain device drivers are able to deliver multiple buffer part within a single request object.

See also
Multi-Part Format
Since
2.20.0
Returns
The number of buffer parts currently associated with this request. This might be zero in case the device driver delivers a standard data stream. It might also be 1 for special data formats such as JPEG, which must be handled differently from an image describing properties perspective.

◆ chunkCounterCount

int chunkCounterCount
get

Returns the number of counter values that can be returned as part of the additional data of the buffer containing the request data.

A device may support a large number of counters even though just a few of them or none is configured for counting. In such a case situation when switching on the transmission of the counter values at the time of the internal frame start event will allow to access the number of counters returned by this function but then the data in these counters of course will be meaningless.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.0.15
Returns
The number of counter values that can be returned as part of the additional data of the buffer containing the request data.

◆ chunkGainCount

int chunkGainCount
get

Returns the number of gain values that can be returned as part of the additional data of the buffer containing the request data.

A device may support a large number of gains even though just a few of them or none is configured to run. In such a case situation when switching on the transmission of the gain values at the time of the internal frame start event will allow to access the number of gains returned by this function but then the data in these gains of course will be meaningless.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.17.3

◆ chunkTimerCount

int chunkTimerCount
get

Returns the number of timer values that can be returned as part of the additional data of the buffer containing the request data.

A device may support a large number of timers even though just a few of them or none is configured to run. In such a case situation when switching on the transmission of the timer values at the time of the internal frame start event will allow to access the number of timers returned by this function but then the data in these timers of course will be meaningless.

Note
For additional information about the chunk data format please refer to Chunk Data Format.
Since
2.0.15

◆ componentEnumerable

IEnumerable<Component> componentEnumerable
getinherited

Returns an enumerator that iterates through the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (Component c in info.componentEnumerable)
{
Console.WriteLine("{0}", c.name);
}
String name
Returns the name of the component referenced by this object.
Definition ComponentAccess.cs:167
A base class to implement access to internal driver components.
Definition Component.cs:133

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ componentListEnumerable

IEnumerable<ComponentList> componentListEnumerable
getinherited

Returns an enumerator that iterates through all the mv.impact.acquire.ComponentList elements in the collection.

This interface will allow to e.g. write code like this:

Info info = new Info(pDev);
foreach (ComponentList cl in info.componentListEnumerable)
{
Console.WriteLine("{0}", cl.name);
}
A class to provide access to component lists.
Definition ComponentList.cs:14

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ hasProcessingBeenSkipped

bool hasProcessingBeenSkipped
get

Checks if image processing that was set up for this request has been skipped for performance reasons.

If mv.impact.acquire.Device.userControlledImageProcessingEnable is set to mv.impact.acquire.TBoolean.bTrue and mv.impact.acquire.SystemSettings.imageProcessingMode is set to mv.impact.acquire.TImageProcessingMode.ipmProcessLatestOnly this function can be used to check if at least one algorithm has been skipped because of a lack of processing time.

See also
mv.impact.acquire.Device.userControlledImageProcessingEnable,
mv.impact.acquire.SystemSettings.imageProcessingMode
Since
2.14.0
Returns
  • true if at least one internal algorithm has been skipped.
  • false otherwise.

◆ hObj

int hObj
getinherited

Returns a unique identifier for the component collection referenced by this object.

This handle will always reference an object of type mv.impact.acquire.ComponentList.

Returns
A unique identifier for the component referenced by this object.

◆ imageProcessingResultsIterator

IEnumerable<Component> imageProcessingResultsIterator
get

Returns an iterator for iterating inside the info/imageProcessingResults list of the request.

This can be useful when custom or device specific algorithms have been applied to the request object that weren't known at compile time.

For a code example please refer to the documentation of mv.impact.acquire.Request.infoEnumerable

See also
mv.impact.acquire.Request.infoEnumerable
Since
2.14.0
Returns
An iterator for iterating inside the info/imageProcessingResults list of the request.

◆ infoEnumerable

IEnumerable<Component> infoEnumerable
get

Returns an enumerator of a that iterates through the all the components in the Info list of the request.

This will allow to e.g. write code like this:

foreach (Component c in pRequest.infoEnumerable)
{
Console.WriteLine("{0}", c.name);
}

See the framework's documentation about the System.Collections.IEnumerable interface for more information.

Returns
An enumerator that iterates through the collection

◆ infoIterator

Component infoIterator
get

Returns an iterator for iterating inside the info list of the request.

This can be useful when custom or device specific information has been attached to the request object that wasn't known at compile time.

It makes it possible to write code like this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
// 'nr' is assumed to be a valid request number returned from a previous call to
// mv.impact.acquire.FunctionInterface.imageRequestWaitFor()
Request pRequest = fi.getRequest( nr );
if( pRequest != null )
{
Component it = pRequest.infoIterator;
while (it.isValid)
{
// collect all entries that are properties and store their current name and value in a map
{
m.Add(prop.name, prop.readS());
}
++it;
}
// Here you can work with the information you just obtained
}
int hObj
Returns a unique identifier for the component referenced by this object.
Definition ComponentAccess.cs:155
bool isProp
Checks if this component is of type mv.impact.acquire.Property or a derived type.
Definition Component.cs:708
bool isVisible
Checks if the component is currently shadowed due to a settings made elsewhere or not.
Definition Component.cs:755
bool isValid
Checks if the internal component referenced by this object is still valid.
Definition Component.cs:727
static Component factory(int hObj)
Creates a new Component from a valid handle.
Definition Component.cs:286
String readS()
Reads data from this property as a string.
Definition Property.cs:303
Returns
An iterator for iterating inside the info list of the request.

◆ isOK

bool isOK
get

Convenience function to check if a request has been processed successfully.

This is just a nicer way of checking the value of the requestResult property:

It makes it possible to write code like this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
// 'requestNr' is assumed to be a valid request number returned from a previous call to
// mv.impact.acquire.FunctionInterface.imageRequestWaitFor()
Request pRequest = fi.getRequest( requestNr );
if( pRequest.isOK )
{
// do something
}

Instead if this:

// 'fi' is assumed to be a valid instance of mv.impact.acquire.FunctionInterface,
// 'nr' is assumed to be a valid request number returned from a previous call to
// mv.impact.acquire.FunctionInterface.imageRequestWaitFor()
Request pRequest = fi.getRequest( nr );
if( pRequest.requestResult.read() == TRequestResult.rrOK )
{
// do something
}
TRequestResult
Defines valid result of an image request.
Definition mvDriverBaseEnums.cs:4238
Since
1.12.63
Returns
  • true if the request has been processed successfully.
  • false otherwise.
Examples
CaptureToUserMemory.cs, ContinuousCapture.cs, ContinuousCaptureAllDevices.cs, ContinuousCaptureSimple.cs, ContinuousSaveImage.cs, GenICamCallbackOnEvent.cs, GenICamCommonSettingsUsage.cs, GenICamInterfaceLayout.cs, Properties.cs, SingleCapture.cs, and SingleCaptureStorage.cs.

◆ name

String name
get

Returns the name associated with this request.

Since
2.32.0

◆ number

int number
get

Returns the number associated with this request.

Examples
ContinuousCaptureSimple.cs.