2010-09-26 93 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); 

和平常下载会做