/*StreamGrabber.Open();*/
// Parameterize the stream grabber
//const int bufferSize = (int) m_Camera.PayloadSize();
//const int numBuffers = 10;
//StreamGrabber.MaxBuf ferSize = bufferSize;
//StreamGrabber.MaxNumBuffer = numBuffers;
//StreamGrabber.PrepareGrab();
//// Allocate and register image buffers, put them into the
//// grabber’s input queue
//unsigned char* ppBuffers[numBuffers];
//MyContext context[numBuffers];
//StreamBufferHandle handles[numBuffers];
//for ( int i = 0; i < numBuffers; ++i )
//{
// ppBuffers[i] = new unsigned char[bufferSize];
// handles[i] = StreamGrabber.RegisterBuffer( ppBuffers[i], bufferSize);
// StreamGrabber.QueueBuffer( handles[i], &context[i] );
//}
m_Camera.AcquisitionStart.Execute();// Start image acquisition
m_Camera.TriggerSoftware.Execute();
GrabResult Result;
if ( StreamGrabber.GetWaitObject().Wait( 3000 ))// Wait for the grabbed image with a timeout of 3 seconds
{
if ( ! StreamGrabber.RetrieveResult( Result ) )// Get an item from the grabber’s output queue
{
cerr << "Failed to retrieve an item from the output queue" << endl;
return FALSE;
}
if ( Result.Succeeded() )
{
BOOL bsuccendPr = ProcessImage( (unsigned char*) Result.Buffer(), Result.GetSizeX(), Result.GetSizeY() );
}
else
{
cerr << "Grab failed: " << Result.GetErrorDescription() << endl;
return FALSE;
}
//if ( i + numBuffers < m_numGrabs /*numGrabs*/ )
// StreamGrabber.QueueBuffer( Result.Handle(), Result.Context() );
}
else
{
TRACE( "==========timeout occurred when waiting for a grabbed image=========");
return FALSE;
}
// Finished. Stop grabbing and do clean-up
m_Camera.AcquisitionStop.Execute();// The camera is in continuous mode, stop image acquisition
StreamGrabber.CancelGrab();// Flush the input queue, grabbing may have failed
while ( StreamGrabber.GetWaitObject().Wait(0) )// Consume all items from the output queue
{
StreamGrabber.RetrieveResult( Result );
if ( Result.Status() == Canceled )
{
cout << "Got canceled buffer" << endl;
}
}
//for ( int i = 0; i < numBuffers; ++i )// Deregister and free buffers
//{
//StreamGrabber.DeregisterBuffer(handles[i]);
//delete [] ppBuffers[i];
//}
StreamGrabber.FinishGrab();// Clean up
StreamGrabber.Close();
m_Camera.Close();
// TlFactory->ReleaseTl( pTl );
}
catch( GenICam::GenericException &e )// Error handling
{
TRACE("==========================An exception occurred!==================\n", e.GetDescription());
MessageBox(e.GetDescription(),NULL,MB_OK );
return FALSE;
}
TRACE("============StopGrab==============\n");
TRACE("==========GetCounter()==%f===============\n",GetCounter());
return