What are the differences between mvSDK/mvAcquireControl and mvIMPACT Acquire?

mvSDK, mvAcquireControl, mvIMPACT Acquire

Following table shows for every interface the necessary basic calls:

Opening hardware

mvSDK mvAcquireControl mvIMPACT Acquire
Hardware should be known and written in the INI file. Using several devices of one family, you should create a INI file for each device. Hardware should be known and written in the INI file. Using several devices of one family, you should create a INI file for each device. No INI or configuration file necessary. Settings are saved in the registry or as XML file. Please have a look, for example, at the sample program 'SingleCapture'.
mvOpenDevice (CHAR FAR* name, 
CHAR *FAR *ini_table,
INT FAR *result,
DRVINI_T FAR *DriverInit)

Simple interface:

grabInit(); 

C++ interface:

IGrabber::Init();

Selection of the hardware from a list via Device Manager:

DeviceManager devMgr; 

Open the chosen hardware:

pDev->open();

 

Setting video input

mvSDK mvAcquireControl mvIMPACT Acquire
Using struct ACQUIRE_DEF_T and Videotiming and also using additional camera definition camdefs.ini and the function SelCamera(); Interface uses the video signal description from the camera definition file camdefs.ini. The mvIMPACT Acquire interface is based on properties. This means that the user request the access on a property interface and thus can change the setting.
SelCamera();

Simple interface: Selection via:

Igrabber::SelCamera
(char * strCameraName)

Example:

CameraSettingsFrameGrabber
cs(pDev);

Allows access to the available camera definitions, which can be found in 'Shared Documents > MATRIX VISION > mvIMPACT Acquire > Camera Files'. You can activate the definition like this:

 cs.type.write
( cameraDescriptionToUse );

Please have a look, for example, at the sample program 'CameraDescriptions'.

 

Futher settings

mvSDK mvAcquireControl mvIMPACT Acquire
Each hardware and each property has an own function. Like in the mvSDK, each property has its own function. Properties are combined in single classes. To change a property (read or write), you have to call the member function of the class.

Example: static setting of a digital output

VOID mvWriteDigIO
(DEV_T FAR *dev, DWORD data)

Example: static setting of a digital output

 ISignals::SetSignal
Definition();

defines bit mask of all outputs and sets them:

 ISignals::Signal();

Example: static setting of a digital output:

IOSubSystemFrameGrabber ioss(pDev); 

allows the access to all digital inputs and outputs. The member function

output (IO-Nummer)

returns the access to set and reset the output.

 

Image acquisition

mvSDK mvAcquireControl mvIMPACT Acquire

Single snap

mvSingleSnap();

Captures 1 image and waits for completion.

 mvSingleSnapAsync();

Function returns immediately. The completion has be done manually.

Continuous snap

  mvContinousSnap();

Continuous snap in the same memory area.

Single snap

  IGrabber::Snap();

Captures 1 image and waits for completion.

 IGrabber::SnapAsync();

Captures 1 image without waiting and function

 IGrabber::WaitForSnapReady();

waits until the image acquisition is completed.

Continuous snap

 IGrabber::Live(); 

Continuous snap in the same memory area.

There is no difference between single snaps with or without waiting. Thus, the same functions are always used. In the background a multi-buffer struct is running, which locks the image content so that it won't be overwritten.

 FunctionInterface fi(pDev);

Creates access to the image acquisition functions.

 fi.ensureRequests(Anzahl);

Defines how many image acquisitions should be available.

fi.ImageRequestSingle();

Requests one image (inserts one image request into the request queue).

 fi.imageRequestWaitFor();

Waits until the image acquisition is completed. Only the way how you use these commands makes the difference between single and continuous snap. Examples: 'SingleCapture' and 'ContinuousCapture'.

Back