C# 佳能(Canon)相機EDSDK應用開發(一)--基本

需求要做個小軟件,軟件可以控制多個相機進行實時預覽拍照.其實大家都知道一般這種開發只要有廠商的SDK就OK了.但聽別人說是要用C++...我一聽就有點怵..後來一看官方的軟件工具就是C#寫的(竊笑)

                   大家英文好的話直接看文檔了,這裏只摘要些重要的部分.

一、與相機工作流程

  1.SDK初始化:EDSDK.EdsInitializeSDK();

  2.與相機建立會話通道:EDSDK.EdsOpenSession(IntPtr camera);

  3.工作處理...

  4.結束與相機的會話:EDSDK.EdsCloseSession(IntPtr camera);

  5.註銷SDK:EDSDK.EdsTerminateSDK();

*在應用程序週期中應保持SDK加載,及與相機的會話通道暢通.只在程序結束時註銷SDK,或特殊處理時關閉到某個相機的會話通道.

二、API返回

       正常狀態均返回‘0’,即EDSDK.EDS_ERR_OK

三、實件處理

  1、事件代理聲明
        private event EDSDK.EdsPropertyEventHandler PropertyEventHandler;

 2、回調

        PropertyEventHandler += new EDSDK.EdsPropertyEventHandler(I_PropertyEventHandler);

        void I_PropertyEventHandler(uint inEvent, uint inPropertyID, uint inParam, IntPtr inContext)
        {
            //throw new NotImplementedException();
        }

     3、綁定

     EDSDK.EdsSetObjectEventHandler(camera, EDSDK.ObjectEvent_All, ObjectEventHandler, IntPtr.Zero);

 

四、獲取、設置相機屬性

   1、獲取相機屬性:屬性都以uint表示,根據獲取的值對應文檔中的屬性說明或獲取屬性的DESCRIBE

            uint _data;
            EDSDK.EdsDataType _dataType;
            int _dataSize;

            //獲取相機當前的存儲位置屬性(1-相機;2-PC;3-同時)
            _hr = EDSDK.EdsGetPropertySize(camera, Example:EDSDK.PropID_SaveTo, 0, out _dataType, out _dataSize);
            _hr = EDSDK.EdsGetPropertyData(camera, Example:EDSDK.PropID_SaveTo, 0, out _data);
            return _data;

     2、設置相機屬性:

        IntPtr _data=new IntPtr(2);

        EDSDK.EdsSetPropertyData(camera, EDSDK.PropID_SaveTo, 0, Marshal.SizeOf(_data), _data);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章