zoukankan      html  css  js  c++  java
  • 佳能单反SDK 步骤

     EdsInitializeSDK();

    EdsGetCameraList(&eclr);//获取相机列表

    EdsGetChildCount(eclr, &camCount);  //获取相机数量

    edsError = EdsGetChildAtIndex(eclr, 0, &camera);   //获取相机句柄,存储在camera里

    EdsSetCameraStateEventHandler(camera, kEdsStateEvent_All, handleSateEvent, NULL);    //设置处理相机“状态”事件的函数

    EdsSetObjectEventHandler(camera, kEdsObjectEvent_All, handleObjectEvent, NULL);    //设置处理相机 事件的函数

    EdsOpenSession(camera);   //打开相机会话

    EdsGetDeviceInfo(camera, &outDeviceInfo);   //获取相机设备信息  outDeviceInfo

    EdsSetPropertyData(camera, kEdsPropID_SaveTo, 0, sizeof(EdsUInt32), &saveTo);   //设置相机照片存储路径

          EdsCapacity capacity = { 0x7FFFFFFF, 0x1000, 1 };
     EdsSetCapacity(camera, capacity);                //设置相机属性

    EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);     //发送拍照指令

     EdsCloseSession(camera);//关闭相机会话     和Open对应

    EdsTerminateSDK   释放SDK  一般最后做

    EdsRetain(object);//增加现有对象的引用计数器

    事件捕获:

    kEdsStateEvent_CaptureError   

    kEdsStateEvent_JobStatusChanged

    一些常见错误:

    疑难:

    state event 错误: OX311不知道是啥   出现这个stat的时候,  take picture 一般是0X81   0X311是和相机失去连接了,需要重新拔插数据线?

    EdsError   错误  : EDS_ERR_DEVICE_BUSY   0X81发生在  EdsSetPropertyData   估计是哪里没有释放造成的?

    回调函数无法调用解决:   ---- 好像下面方法也无法解决  麻蛋。。

    If you're using the EDSDK on Windows, you have to have a Windows message loop in your main thread, otherwise callbacks won't happen. (This is because the EDSDK uses the obsolete COM STA threading model instead of real threads.)

       while(GetMessage(&msg, NULL, NULL, NULL))
        {        
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }

    bool bPhotoTaken = false;
    main()
    {
     // Initialize EDSDK, start session with camera, change SaveTo property
     // register ObjectEventHandler
     // send kEdsCameraCommand_TakePicture
    
       while((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
       {
         if(bRet == -1 || bPhotoTaken)
         {
             break;
         }
         else
         {
             TranslateMessage(&msg);
             DispatchMessage(&msg);
         }
       }
    
      // Cleanup EDSDK
    }








    handlePropertyEvent :

    0X101      kEdsPropertyEvent_PropertyChanged -     这个参数说明参数发生了改变

    0X102      kEdsPropertyEvent_PropertyChanged - 这个参数说明参数发生了改变

    err = EdsDownloadEvfImage(theCamera, evfImage);    这里偶尔会出现 bug : EDS_ERR_OBJECT_NOTREADY ;      如果要获取流的话  就要不断去查询才可以,查询到object准备好了 就获取里面的数据。






  • 相关阅读:
    Java中的HashMap
    单机百万连接调优和Netty应用级别调优
    简单排序(冒泡排序,插入排序,选择排序)
    使用AC自动机解决文章匹配多个候选词问题
    树状数组解决数组单点更新后快速查询区间和的问题
    LeetCode 763. Partition Labels
    LeetCode 435. Non-overlapping Intervals
    线段树
    无序数组求第K大的数
    KMP算法解决字符串匹配问题
  • 原文地址:https://www.cnblogs.com/luoyinjie/p/8803683.html
Copyright © 2011-2022 走看看