1

我将 eos 佳能相机连接到 pc
我有一个应用程序,我可以远程拍照,并将图像下载到 pc,

但是当我从相机中取出 SD 卡时,我无法将图像从缓冲区下载到电脑

// 注册 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 卡

谢谢

4

3 回答 3

2

你可能遇到了和我昨天一样的问题:相机尝试存储图像以供以后下载,但找不到存储卡来存储它并立即丢弃图像。

要触发回调,您需要在相机初始化例程中的某个时间点将相机设置为将图像保存到 PC (kEdsSaveTo_Host)。在 C++ 中,它是这样工作的:

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

您可能需要为此构建一个 IntPtr。至少,这就是 Dmitriy Prozorovskiy在这个线程中所做的(由某个akadunno提示)。

于 2011-07-19T10:27:07.263 回答
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);

通常的下载就可以了

于 2013-04-16T10:24:00.297 回答
0

SDK(据我所知)仅以在相机文件系统(即SD卡)上创建的对象的形式公开拍照事件。没有一种我熟悉的从缓冲区捕获的方法。从某种意义上说,这是有道理的,因为在只有少量板载内存的环境中,保持易失性内存畅通非常重要,这样它才能继续拍照。将缓冲区刷新到非易失性内存后,您就可以与这些字节进行交互了。限制,我知道,但事实就是如此。

于 2010-09-26T18:00:05.377 回答