Example #1
0
bool camera_jai::closeCamera()
{
	J_STATUS_TYPE	status = J_ST_SUCCESS;
	if (m_hCam)
	{
		// Close camera
		status = J_Camera_Close(m_hCam);
		if(status != J_ST_SUCCESS) 
		{
			ShowErrorMsg(CString("Could not close camera!"), status);
		}
		m_hCam = NULL;
		TRACE("Closed camera\n");
	}
	return true;
}
Example #2
0
int CGigECamera::OnCameraChoice( MM::PropertyBase* pProp, MM::ActionType eAct )
{
	if( eAct == MM::AfterSet )
	{
		std::string name;
		pProp->Get( name );
		std::map<std::string,std::string>::iterator i = cameraNameMap.find( name );
		if( i == cameraNameMap.end() )
		{
			LogMessage( (std::string) "internal error:  inconsistency in camera name map (" + name + ")", false );
			return DEVICE_INTERNAL_INCONSISTENCY;
		}
		std::string realName = (*i).second;

		if( this->cameraName.compare( realName ) != 0 ) // squash idempotent changes
		{
			LogMessage( (std::string) "Opening camera:  " + realName );
			J_STATUS_TYPE retval = J_Camera_Close( hCamera );				
			retval = J_Camera_Open( hFactory, const_cast<char*>(realName.c_str()), &hCamera );
			// XXX this should really refresh all the camera parameters after opening a new camera,
			// possibly enabling or removing some properties.
			if( retval != J_ST_SUCCESS )
			{
				LogMessage( (std::string) "camera open failed (" + realName + ")", false );
				return DEVICE_NATIVE_MODULE_FAILED;
			}
			cameraName = realName;
		}
	}
	else if( eAct == MM::BeforeGet )
	{
		std::map<std::string,std::string>::iterator i = cameraNameMap.find( cameraName );
		if( i == cameraNameMap.end() )
		{
			LogMessage( (std::string) "internal error:  inconsistency in camera name map (" + cameraName + ")", false );
			return DEVICE_INTERNAL_INCONSISTENCY;
		}
		pProp->Set( (*i).second.c_str() );
	}
	return DEVICE_OK;
}