2010-09-26 51 views
1

下載圖片我連接的EOS佳能相機到電腦
我有,我可以拍照remotly,並下載圖像到PC的應用程序,問題,從佳能相機到電腦

但是當我取出SD卡從相機,我不能從緩衝器下載圖像到PC

//寄存器objceteventcallback

err = EDSDK.EdsSetObjectEventHandler(obj.camdevice, EDSDK.ObjectEvent_All, objectEventHandler, new IntPtr(0)); 
       if (err != EDSDK.EDS_ERR_OK) 
       Debug.WriteLine("Error registering object event handler"); 

///

public uint objectEventHandler(uint inEvent, IntPtr inRef, IntPtr inContext) 
     { 
      switch(inEvent) 
      { 

       case EDSDK.ObjectEvent_DirItemCreated: 

        this.getCapturedItem(inRef); 

        Debug.WriteLine("dir item created"); 

        break; 
       case EDSDK.ObjectEvent_DirItemRequestTransfer: 
        this.getCapturedItem(inRef); 
        Debug.WriteLine("file transfer request event"); 
        break; 

       default: 
        Debug.WriteLine(String.Format("ObjectEventHandler: event {0}", inEvent)); 
        break; 
      } 
      return 0; 
     } 

有人可以幫助我,爲什麼這個事件不打電話,

或如何我從緩衝區下載圖片到電腦,用了有sd卡我的相機

感謝

回答

0

的SDK(據我所知)只會以在相機文件系統(即SD卡)上創建的對象的形式曝光拍照事件。我不熟悉從緩衝區捕獲的方法。從某種意義上說,這是因爲在只有少量板載內存的環境中,保持易失性存儲器清晰以便可以繼續拍照很重要。一旦緩衝區被刷新到非易失性存儲器中,您就可以清楚地與這些字節進行交互。我知道限制,但它就是這樣。

+0

有一個軟件「DSLR遠程臨」,這個軟件拍攝照片並且即使沒有存儲卡(SD卡)也可以將圖像保存到PC上,該程序也使用edsdk – ulduz114 2010-09-27 07:25:41

2

您可能遇到了與我昨天所做的相同的問題:相機嘗試存儲圖像以供以後下載,找不到存儲卡存儲並立即丟棄圖像。

爲了讓您的回調起動,您需要將相機設置爲在相機初始化程序的某個時間點將圖像保存到PC(kEdsSaveTo_Host)。在C++中,它的工作方式如下:

EdsInt32 saveTarget = kEdsSaveTo_Host; 
    err = EdsSetPropertyData(_camera, kEdsPropID_SaveTo, 0, 4, &saveTarget); 

您可能需要爲此構建一個IntPtr。至少,這就是Dmitriy Prozorovskiy在this thread所做的(由某個akadunno提供)。

0

的問題問的C#,但在Java中一個必須的setProperty爲:

NativeLongByReference number = new NativeLongByReference(new NativeLong(EdSdkLibrary.EdsSaveTo.kEdsSaveTo_Host)); 
    EdsVoid data = new EdsVoid(number.getPointer()); 
    NativeLong l = EDSDK.EdsSetPropertyData(edsCamera, new NativeLong(EdSdkLibrary.kEdsPropID_SaveTo), new NativeLong(0), new NativeLong(NativeLong.SIZE), data); 

和平常下載會做