EdsError CanonEDCamera::getFirstCamera(EdsCameraRef *camera) { EdsError err = EDS_ERR_OK; EdsCameraListRef cameraList = NULL; EdsUInt32 count = 0; // Get camera list err = EdsGetCameraList(&cameraList); // Get number of cameras if(err == EDS_ERR_OK) { err = EdsGetChildCount(cameraList, &count); if(count == 0) { err = EDS_ERR_DEVICE_NOT_FOUND; } } // Get first camera retrieved if(err == EDS_ERR_OK) { err = EdsGetChildAtIndex(cameraList , 0 , camera); } // Release camera list if(cameraList != NULL) { EdsRelease(cameraList); cameraList = NULL; } return err; }
CameraList::CameraList() : list_(nullptr) { EdsError err = EdsGetCameraList(&list_); if (EDS_ERR_OK != err) { DEBUGSTREAM << DescribeError(err) << std::endl; throw Exception(err); } }
CanonCamera::CanonCamera(void) { liveView = false; camID = numOfCameras; numOfCameras++; windowName = "Camera "; windowName += '1' + camID; windowName += " Window"; EdsCameraListRef cameraList = NULL; EdsGetCameraList(&cameraList); EdsUInt32 camCount = 0; EdsGetChildCount(cameraList, &camCount); if(camCount==0) { std::cout<<"No Camera Found"<<". Press Any Key to Exit."; getch(); exit(-1); } else { std::cout<<camCount<<" Camera(s) found!\n"; } EdsError err = EDS_ERR_OK; err = EdsGetChildAtIndex(cameraList , camID , &camera); //Release camera list if(cameraList != NULL) { EdsRelease(cameraList); } detectedCams=camCount; //open sesion err=EdsOpenSession(camera); if(err!=EDS_ERR_OK) { std::cout<<"Problem with Camera connection"<<". Press Any Key to Exit"; getch(); exit(-1); } }
IEnumerable<Camera^>^ CameraManager::GetCameraList() { EdsCameraListRef cameraHandleList; EdsUInt32 cameraCount; List<Camera^>^ cameraList = gcnew List<Camera^>(); // Iterate through the camera handles and create a new Camera wrapper for each one. ErrorCheck(EdsGetCameraList(&cameraHandleList)); ErrorCheck(EdsGetChildCount(cameraHandleList, &cameraCount)); for (int i = 0; i < (int)cameraCount; i++) { EdsCameraRef cameraHandle; ErrorCheck(EdsGetChildAtIndex(cameraHandleList, i, &cameraHandle)); cameraList->Add(gcnew Camera(cameraHandle)); } return cameraList; }
unsigned queryCamera() { EdsCameraListRef cameraList = NULL; EdsError err = EdsGetCameraList(&cameraList); if (err != EDS_ERR_OK) { } EdsUInt32 numCameras = 0; err = EdsGetChildCount(cameraList, &numCameras); if (err == EDS_ERR_OK) { handleErrorCode(err); } // Release camera list if (cameraList != NULL) { EdsRelease(cameraList); cameraList = NULL; } return (unsigned) numCameras; }
EdsCameraRef openCamera() { EdsCameraListRef cameraList = NULL; // Get camera list EdsError err = EdsGetCameraList(&cameraList); if (err != EDS_ERR_OK) { handleErrorCode(err); } EdsUInt32 numCameras = 0; // Get number of cameras err = EdsGetChildCount(cameraList, &numCameras); if (err == EDS_ERR_OK) { handleErrorCode(err); } if (numCameras > 1) { mexWarnMsgTxt("Warning: more than one available cameras found. Multiple cameras are not well supported."); } else if (numCameras <= 0) { mexErrMsgIdAndTxt(ERROR_ID, "No available camera found."); return NULL; } EdsCameraRef handle; // Get first camera retrieved err = EdsGetChildAtIndex(cameraList , 0 , &handle); if (err != EDS_ERR_OK) { handleErrorCode(err); } // Release camera list if (cameraList != NULL) { EdsRelease(cameraList); cameraList = NULL; } // Set object event handler err = EdsSetObjectEventHandler(handle, kEdsObjectEvent_All, handleObjectEvent, NULL); if (err != EDS_ERR_OK) { handleErrorCode(err); } // Set property event handler err = EdsSetPropertyEventHandler(handle, kEdsPropertyEvent_All, handlePropertyEvent, NULL); if (err != EDS_ERR_OK) { handleErrorCode(err); } // Set camera state event handler err = EdsSetCameraStateEventHandler(handle, kEdsStateEvent_All, handleStateEvent, NULL); if (err != EDS_ERR_OK) { handleErrorCode(err); } // Open session with camera err = EdsOpenSession(handle); if (err != EDS_ERR_OK) { handleErrorCode(err); } return handle; }
//--------------------------------------------------------------------- bool CanonCameraWrapper::setup(int cameraID){ if( theCamera != NULL || theCameraList != NULL){ destroy(); } EdsError err = EDS_ERR_OK; EdsUInt32 cameraCount = 0 ; err = EdsInitializeSDK(); if(err != EDS_ERR_OK){ printf("Couldn't open sdk!\n"); return false; }else{ printf("Opening the sdk\n"); sdkRef++; } ofSleepMillis(3000); // Initialize // Get the camera list err = EdsGetCameraList(&theCameraList); // Get the number of cameras. if( err == EDS_ERR_OK ){ err = EdsGetChildCount( theCameraList, &cameraCount ); if ( cameraCount == 0 ){ err = EDS_ERR_DEVICE_NOT_FOUND; printf("No devices found!\n"); return false; } } // Get the camera if ( err == EDS_ERR_OK ){ if (cameraID >= cameraCount){ printf("No camera of id %i exists - number of cameras is %i\n", cameraID, cameraCount); return false; } printf("We are opening camera %i!\n", cameraID); err = EdsGetChildAtIndex( theCameraList , cameraID , &theCamera ); //Release camera list if(theCameraList != NULL){ EdsRelease(theCameraList); } if(err == EDS_ERR_OK){ printf("We are connected!\n"); state = CAMERA_READY; //return true; }else{ printf("We are not connected!\n"); state = CAMERA_UNKNOWN; return false; } registerCallback(); return true; } }
boolean connectToFirstCamera(){ EdsError err = EDS_ERR_OK; // Initialize SDK err = EdsInitializeSDK(); if ( err == EDS_ERR_OK ) isSDKLoaded = true; /* // Get first camera if(err == EDS_ERR_OK) { err = getFirstCamera(); }*/ EdsCameraListRef cameraList = NULL; EdsUInt32 count = 0; // Get camera list err = EdsGetCameraList(&cameraList); // Get number of cameras if(err == EDS_ERR_OK) { err = EdsGetChildCount(cameraList, &count); if(count == 0) { err = EDS_ERR_DEVICE_NOT_FOUND; } } // Get first camera retrieved if(err == EDS_ERR_OK) { err = EdsGetChildAtIndex(cameraList , 0 , &camera); } // Release camera list if(cameraList != NULL) { EdsRelease(cameraList); cameraList = NULL; } //Open Session if(err == EDS_ERR_OK) { err = EdsOpenSession(camera); } //Set save to host if (err == EDS_ERR_OK ) { EdsUInt32 wkSaveTo = kEdsSaveTo_Host ; do { err = EdsSetPropertyData ( camera, kEdsPropID_SaveTo, 0, 4, (void*)&wkSaveTo ) ; if (err != EDS_ERR_OK) { std::cout << "warning: camera busy, waiting..." << std::endl; std::flush(std::cout); Sleep(100); } } while (err != EDS_ERR_OK); } // Set host capacity EdsCapacity capacity = {0x7FFFFFFF, 0x1000, 1}; err = EdsSetCapacity ( camera, capacity ); return err == EDS_ERR_OK; }