Advertisement
Guest User

With eventHasFired variable

a guest
Nov 2nd, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #include "EDSDK.h"
  4. #include "EDSDKTypes.h"
  5. #include "EDSDKErrors.h"
  6.  
  7. bool eventHasFired = false;  // Boolean to check callback-execution
  8.  
  9. static EdsError EDSCALLBACK handleObjectEvent(EdsObjectEvent event, EdsBaseRef object, EdsVoid* context)
  10. {
  11.     std::cout << "I'm in the callback-function!!!\n";
  12.     eventHasFired = true;  // Notify that event has fired
  13.     EdsError err = EDS_ERR_OK;
  14.     if (event == kEdsObjectEvent_DirItemRequestTransfer)
  15.     {
  16.         std::cout << "It's the right event!!!\n";
  17.         EdsStreamRef stream = NULL;
  18.         EdsDirectoryItemInfo dirItemInfo;
  19.         err = EdsGetDirectoryItemInfo(object, &dirItemInfo);
  20.         err = EdsCreateFileStream(dirItemInfo.szFileName, kEdsFileCreateDisposition_CreateAlways, kEdsAccess_ReadWrite, &stream);
  21.         err = EdsDownload(object, dirItemInfo.size, stream);
  22.         err = EdsDownloadComplete(object);
  23.         EdsRelease(stream);
  24.         stream = NULL;
  25.     }
  26.     if (object)
  27.         EdsRelease(object);
  28.  
  29.     return err;
  30. }
  31.  
  32. void TakePhoto(EdsCameraRef camera)
  33. {
  34.     EdsError err = EDS_ERR_OK;
  35.     EdsCameraListRef cameraList = NULL;
  36.     EdsUInt32 count = 0;
  37.  
  38.     err = EdsInitializeSDK();
  39.     err = EdsGetCameraList(&cameraList);
  40.     err = EdsGetChildCount(cameraList, &count);
  41.     if (count > 0)
  42.     {
  43.         err = EdsGetChildAtIndex(cameraList, 0, &camera);
  44.         cameraList = NULL;
  45.         err = EdsSetObjectEventHandler(camera, kEdsObjectEvent_All, handleObjectEvent, NULL);
  46.         err = EdsOpenSession(camera);
  47.         err = EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
  48.  
  49.         while (!eventHasFired) {
  50.             EdsGetEvent();
  51.         }
  52.         eventHasFired = false;  // Reset to make function executable multiple times
  53.     }
  54. }
  55.  
  56. void Close(EdsCameraRef camera)
  57. {
  58.     EdsError err = EdsCloseSession(camera);
  59.     EdsRelease(camera);
  60.     EdsTerminateSDK();
  61. }
  62.  
  63. int main() {
  64.     EdsCameraRef camera = NULL;
  65.     TakePhoto(camera);
  66.     Close(camera);
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement