ClassesClassesClassesClasses | | | | Operators

grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync (Operator)

Name

grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync — Asynchronous grab of an image from the specified image acquisition device.

Signature

grab_image_async( : Image : AcqHandle, MaxDelay : )

Herror grab_image_async(Hobject* Image, const Hlong AcqHandle, double MaxDelay)

Herror T_grab_image_async(Hobject* Image, const Htuple AcqHandle, const Htuple MaxDelay)

Herror grab_image_async(Hobject* Image, const HTuple& AcqHandle, const HTuple& MaxDelay)

HImage HImage::GrabImageAsync(const HFramegrabber& AcqHandle, const HTuple& MaxDelay)

HImage HFramegrabber::GrabImageAsync(const HTuple& MaxDelay) const

void GrabImageAsync(HObject* Image, const HTuple& AcqHandle, const HTuple& MaxDelay)

void HImage::GrabImageAsync(const HFramegrabber& AcqHandle, double MaxDelay)

HImage HFramegrabber::GrabImageAsync(double MaxDelay) const

void HOperatorSetX.GrabImageAsync(
[out] IHUntypedObjectX*Image, [in] VARIANT AcqHandle, [in] VARIANT MaxDelay)

void HImageX.GrabImageAsync(
[in] IHFramegrabberX* AcqHandle, [in] double MaxDelay)

IHImageX* HFramegrabberX.GrabImageAsync([in] double MaxDelay)

static void HOperatorSet.GrabImageAsync(out HObject image, HTuple acqHandle, HTuple maxDelay)

void HImage.GrabImageAsync(HFramegrabber acqHandle, double maxDelay)

HImage HFramegrabber.GrabImageAsync(double maxDelay)

Description

The operator grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync requests an asynchronously grabbed image from the image acquisition device specified by AcqHandleAcqHandleAcqHandleAcqHandleAcqHandleacqHandle. By default, grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync also starts the next asynchronous grab before the operator returns. More information about the behavior of a specific image acquistion device can be found in the corresponding interface documentation in the directory 'doc/html/reference/acquisition'"doc/html/reference/acquisition""doc/html/reference/acquisition""doc/html/reference/acquisition""doc/html/reference/acquisition""doc/html/reference/acquisition". The desired operational mode of the image acquisition device as well as a suitable image part and additional interface-specific settings can be specified using the operators open_framegrabberopen_framegrabberOpenFramegrabberopen_framegrabberOpenFramegrabberOpenFramegrabber and set_framegrabber_paramset_framegrabber_paramSetFramegrabberParamset_framegrabber_paramSetFramegrabberParamSetFramegrabberParam.

The grab is finished by calling grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync or grab_data_asyncgrab_data_asyncGrabDataAsyncgrab_data_asyncGrabDataAsyncGrabDataAsync. If more than MaxDelayMaxDelayMaxDelayMaxDelayMaxDelaymaxDelay ms have passed since the asynchronous grab was started, the asynchronously grabbed image is considered as too old and a new image is grabbed, if necessary. If a negative value is assigned to MaxDelayMaxDelayMaxDelayMaxDelayMaxDelaymaxDelay, this control mechanism is deactivated.

To abort the grab, the operator set_framegrabber_paramset_framegrabber_paramSetFramegrabberParamset_framegrabber_paramSetFramegrabberParamSetFramegrabberParam with the parameter 'do_abort_grab' can be used if the specific image acquisition interface supports it. Note that as an exception from the description of the concurrent usage in multiple threads (see below) 'do_abort_grab' can also be used from another thread.

Please note that if you call the operators grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage or grab_datagrab_dataGrabDatagrab_dataGrabDataGrabData after grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync, the asynchronous grab started by grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync is aborted and a new synchronous grab is started.

Attention

Basically an image acquisition handle AcqHandleAcqHandleAcqHandleAcqHandleAcqHandleacqHandle cannot be used in multiple threads. However, possible exceptions are described in the specific reference documentation of the respective image acquisition interface. Different image acquisition handles can be used safely with different threads for each handle.

For a multithreaded application all image acquisition operators (as listed in open_framegrabberopen_framegrabberOpenFramegrabberopen_framegrabberOpenFramegrabberOpenFramegrabber) are an own group in which info_framegrabberinfo_framegrabberInfoFramegrabberinfo_framegrabberInfoFramegrabberInfoFramegrabber, open_framegrabberopen_framegrabberOpenFramegrabberopen_framegrabberOpenFramegrabberOpenFramegrabber, close_framegrabberclose_framegrabberCloseFramegrabberclose_framegrabberCloseFramegrabberCloseFramegrabber and close_all_framegrabbersclose_all_framegrabbersCloseAllFramegrabbersclose_all_framegrabbersCloseAllFramegrabbersCloseAllFramegrabbers are executed exclusively.

grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync runs in parallel with all non-exclusive operators inside and outside of this group.

Parallelization

Parameters

ImageImageImageImageImageimage (output_object)  image objectHImageHImageHImageHImageXHobject * (byte / int2)

Grabbed image.

AcqHandleAcqHandleAcqHandleAcqHandleAcqHandleacqHandle (input_control)  framegrabber HFramegrabber, HTupleHTupleHFramegrabber, HTupleHFramegrabberX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle of the acquisition device to be used.

MaxDelayMaxDelayMaxDelayMaxDelayMaxDelaymaxDelay (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Maximum tolerated delay between the start of the asynchronous grab and the delivery of the image [ms].

Default value: -1.0

Suggested values: -1.0, 20.0, 33.3, 40.0, 66.6, 80.0, 99.9

Example (HDevelop)

* Select a suitable image acquisition interface name AcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \
                  'default','default','default',-1,-1,AcqHandle)
* Grab image + start next grab
grab_image_async(Image1,AcqHandle,-1.0)
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)
* Process Image2 ...
close_framegrabber(AcqHandle)

Example (C)

/* Select a suitable image acquisition interface name AcqName */
open_framegrabber(AcqName,1,1,0,0,0,0,"default",-1,"default",-1.0,
                  "default","default","default",-1,-1,&AcqHandle) ;
/* Grab image + start next grab */
grab_image_async(&Image1,AcqHandle,-1.0) ;
/* Process Image1... */
/* Finish asynchronous grab + start next grab */
grab_image_async(&Image2,AcqHandle,-1.0) ;
/* Process Image2... */
close_framegrabber(AcqHandle) ;

Example (HDevelop)

* Select a suitable image acquisition interface name AcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \
                  'default','default','default',-1,-1,AcqHandle)
* Grab image + start next grab
grab_image_async(Image1,AcqHandle,-1.0)
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)
* Process Image2 ...
close_framegrabber(AcqHandle)

Example (HDevelop)

* Select a suitable image acquisition interface name AcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \
                  'default','default','default',-1,-1,AcqHandle)
* Grab image + start next grab
grab_image_async(Image1,AcqHandle,-1.0)
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)
* Process Image2 ...
close_framegrabber(AcqHandle)

Example (HDevelop)

* Select a suitable image acquisition interface name AcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \
                  'default','default','default',-1,-1,AcqHandle)
* Grab image + start next grab
grab_image_async(Image1,AcqHandle,-1.0)
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)
* Process Image2 ...
close_framegrabber(AcqHandle)

Example (HDevelop)

* Select a suitable image acquisition interface name AcqName
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \
                  'default','default','default',-1,-1,AcqHandle)
* Grab image + start next grab
grab_image_async(Image1,AcqHandle,-1.0)
* Process Image1 ...
* Finish asynchronous grab + start next grab
grab_image_async(Image2,AcqHandle,-1.0)
* Process Image2 ...
close_framegrabber(AcqHandle)

Result

If the image acquisition device is open and supports asynchronous grabbing the operator grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync returns the value 2 (H_MSG_TRUE). Otherwise an exception is raised.

Possible Predecessors

grab_image_startgrab_image_startGrabImageStartgrab_image_startGrabImageStartGrabImageStart, open_framegrabberopen_framegrabberOpenFramegrabberopen_framegrabberOpenFramegrabberOpenFramegrabber, set_framegrabber_paramset_framegrabber_paramSetFramegrabberParamset_framegrabber_paramSetFramegrabberParamSetFramegrabberParam

Possible Successors

grab_data_asyncgrab_data_asyncGrabDataAsyncgrab_data_asyncGrabDataAsyncGrabDataAsync, set_framegrabber_paramset_framegrabber_paramSetFramegrabberParamset_framegrabber_paramSetFramegrabberParamSetFramegrabberParam, close_framegrabberclose_framegrabberCloseFramegrabberclose_framegrabberCloseFramegrabberCloseFramegrabber

See also

grab_image_startgrab_image_startGrabImageStartgrab_image_startGrabImageStartGrabImageStart, open_framegrabberopen_framegrabberOpenFramegrabberopen_framegrabberOpenFramegrabberOpenFramegrabber, info_framegrabberinfo_framegrabberInfoFramegrabberinfo_framegrabberInfoFramegrabberInfoFramegrabber, set_framegrabber_paramset_framegrabber_paramSetFramegrabberParamset_framegrabber_paramSetFramegrabberParamSetFramegrabberParam

Module

Foundation


ClassesClassesClassesClasses | | | | Operators