Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "EDSDK.h"
- #include "EDSDKTypes.h"
- #include "EDSDKErrors.h"
- bool eventHasFired = false; // Boolean to check callback-execution
- static EdsError EDSCALLBACK handleObjectEvent(EdsObjectEvent event, EdsBaseRef object, EdsVoid* context)
- {
- std::cout << "I'm in the callback-function!!!\n";
- eventHasFired = true; // Notify that event has fired
- EdsError err = EDS_ERR_OK;
- if (event == kEdsObjectEvent_DirItemRequestTransfer)
- {
- std::cout << "It's the right event!!!\n";
- EdsStreamRef stream = NULL;
- EdsDirectoryItemInfo dirItemInfo;
- err = EdsGetDirectoryItemInfo(object, &dirItemInfo);
- err = EdsCreateFileStream(dirItemInfo.szFileName, kEdsFileCreateDisposition_CreateAlways, kEdsAccess_ReadWrite, &stream);
- err = EdsDownload(object, dirItemInfo.size, stream);
- err = EdsDownloadComplete(object);
- EdsRelease(stream);
- stream = NULL;
- }
- if (object)
- EdsRelease(object);
- return err;
- }
- void TakePhoto(EdsCameraRef camera)
- {
- EdsError err = EDS_ERR_OK;
- EdsCameraListRef cameraList = NULL;
- EdsUInt32 count = 0;
- err = EdsInitializeSDK();
- err = EdsGetCameraList(&cameraList);
- err = EdsGetChildCount(cameraList, &count);
- if (count > 0)
- {
- err = EdsGetChildAtIndex(cameraList, 0, &camera);
- cameraList = NULL;
- err = EdsSetObjectEventHandler(camera, kEdsObjectEvent_All, handleObjectEvent, NULL);
- err = EdsOpenSession(camera);
- err = EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
- while (!eventHasFired) {
- EdsGetEvent();
- }
- eventHasFired = false; // Reset to make function executable multiple times
- }
- }
- void Close(EdsCameraRef camera)
- {
- EdsError err = EdsCloseSession(camera);
- EdsRelease(camera);
- EdsTerminateSDK();
- }
- int main() {
- EdsCameraRef camera = NULL;
- TakePhoto(camera);
- Close(camera);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement