EGrabber for MultiCam users
Coaxlink Programmer's Guide
Acquisition start/stop
//MultiCam
// start "live"
McSetParamInt(channel, MC_GrabCount, MC_INFINITE);
McSetParamInt(channel, MC_ChannelState, MC_ChannelState_ACTIVE);
// stop
McSetParamInt(channel, MC_ChannelState, MC_ChannelState_IDLE);
// grab 10 images
McSetParamInt(channel, MC_GrabCount, 10);
McSetParamInt(channel, MC_ChannelState, MC_ChannelState_ACTIVE);
//EGrabber
// start "live"
grabber.start();
// stop
grabber.stop();
// grab 10 images
grabber.start(10);
Synchronous (blocking) buffer reception
//MultiCam
MCSTATUS status;
MCSIGNALINFO info;
// wait for a surface
status = McWaitSignal(channel, MC_SIG_SURFACE_PROCESSING, timeout, &info);
if
(status != MC_OK) {
...
}
MCHANDLE surface = info.SignalInfo;
// process surface
...
// make surface available for new images
status = McSetParamInt(surface, MC_SurfaceState, MC_SurfaceState_FREE);
if
(status != MC_OK) {
...
}
//EGrabber
// wait for a buffer
Buffer buffer = grabber.pop(timeout);
// process buffer
...
// make buffer available for new images
buffer.push(grabber);
//EGrabber
{
// wait for a buffer
ScopedBuffer buffer(grabber, timeout);
// process buffer
...
// ScopedBuffer destructor takes care of making buffer available for new images
}
Callbacks
//MultiCam
class
MyChannel {
public
:
MyChannel() {
// create and configure channel
...
// enable "SURFACE_PROCESSING" events
status = McSetParamInt(channel, MC_Signal MC_SIG_SURFACE_PROCESSING,
37