📄 pgrcamera.cpp
字号:
//#include "StdAfx.h"
#ifdef VM_PGR
#include "PGRCamera.h"
#include "pgrerror.h"
#include <sstream>
#include "AVIGenerator.h"
PGRCamera::PGRCamera(void)
{
controller = NULL;
context = NULL;
guiContext = NULL;
controller = NULL;
recording = false;
started = false;
convertForTheRenderer = false;
imageConverted.pData = NULL;
serialNumber = 0;
act = 0;
}
PGRCamera::~PGRCamera(void)
{
FlyCaptureError capError;
stopGrabRecord();
if ( started )
{
capError = flycaptureStop( context );
checkCaptureError( capError, "flycaptureStop()" );
}
started = false;
capError = flycaptureDestroyContext( context );
checkCaptureError( capError, "flycaptureDestroyContext()" );
if ( imageConverted.pData != NULL )
{
delete [] imageConverted.pData;
imageConverted.pData = NULL;
}
pgrcamguiDestroyContext( guiContext );
recording = false;
}
bool PGRCamera::checkCaptureError( FlyCaptureError error, std::string message )
{
if( error != FLYCAPTURE_OK )
{
std::string textError = message;
textError = textError + flycaptureErrorToString( error );
PGR_ERROR_MESSAGE( textError.c_str() );
return false;
}
return true;
}
bool PGRCamera::checkGuiError( CameraGUIError error, std::string message )
{
if( error != PGRCAMGUI_OK )
{
PGR_ERROR_MESSAGE( message.c_str() );
return false;
}
return true;
}
bool PGRCamera::initCamera( unsigned long aSerialNumber, VideoManInputFormat *aFormat )
{
FlyCaptureError capError;
CameraGUIError guiError;
capError = flycaptureCreateContext( &context );
if ( !checkCaptureError( capError, "flycaptureCreateContext()" ) )
return false;
guiError = pgrcamguiCreateContext( &guiContext );
if ( !checkGuiError( guiError, "pgrcamguiCreateContext() Error creating GUI context." ) )
return false;
format = *aFormat;
serialNumber = aSerialNumber;
// Show the camera selection dialog.
if ( aFormat->showDlg )
{
int iDialogStatus;
//The user must select the camera
guiError = ::pgrcamguiShowCameraSelectionModal( guiContext, context, &serialNumber, &iDialogStatus );
if ( !checkGuiError( guiError, "pgrcamguiShowCameraSelectionModal() Error showing camera selection dialog." ) || serialNumber == 0 )
return false;
}
//Check the bus index
FlyCaptureInfoEx arInfo[ 32 ];
unsigned int uiSize = 32;
FlyCaptureError error = flycaptureBusEnumerateCamerasEx( arInfo, &uiSize );
if ( !checkCaptureError( error, "flycaptureBusEnumerateCamerasEx()" ) )
return false;
if ( uiSize == 0 )
return false;
uiBusIndex = 0;
bool found = false;
while ( uiBusIndex < uiSize && !found)
{
FlyCaptureInfoEx* pinfo = &arInfo[ uiBusIndex ];
if ( pinfo->SerialNumber == serialNumber )
{
found = true;
}
uiBusIndex++;
}
//Take the first camera of the bus
if ( !found )
{
uiBusIndex = 0;
FlyCaptureInfoEx* pinfo = &arInfo[ uiBusIndex ];
serialNumber = pinfo->SerialNumber;
}
else
uiBusIndex--;
/*capError = flycaptureInitializeFromSerialNumber( context, serialNumber );
if ( !checkCaptureError( capError, "flycaptureInitializeFromSerialNumber()" ) )
return false;*/
//serialNumber = aSerialNumber;
/*initBuffers( *aFormat ); //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -