コード例 #1
0
ファイル: camera_jai.cpp プロジェクト: Strongc/Mobis
bool camera_jai::openCamera()
{

	// close a previous camera and open a selected camera
	J_STATUS_TYPE	status = J_ST_SUCCESS;

	if(!m_hCam)
	{

		//open the selected camera
		status = J_Camera_Open(m_hFactory, m_sCameraId, &m_hCam);
		if(status != J_ST_SUCCESS) 
		{
			ShowErrorMsg(CString("Could not open camera!"), status);
			return false;
		}

		
		//Make sure streaming is supported!
		uint32_t numStreams = 0;
		status = J_Camera_GetNumOfDataStreams(m_hCam, &numStreams);
		if (status != J_ST_SUCCESS)
		{
			ShowErrorMsg(CString("Error with J_Camera_GetNumOfDataStreams."), status);
			return false;
		}

	}
	return true;

}
コード例 #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;
}