2010-09-26 5 views
1

i connecté un appareil photo canon eos pour pc
i avoir une application que je pouvais prendre une photo remotly, et l'image de téléchargement pour PC,avec photo de téléchargement de l'appareil photo canon à pc

mais quand je retire la carte SD de la caméra, je ne peux pas télécharger l'image de tampon pc

// enregistrer 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; 
     } 

quelqu'un pouvait me aider, pourquoi cet événement ne remet pas,

ou comment je télécharger l'image du tampon pc, hors avoir la carte Sd sur mon appareil photo

grâce

Répondre

0

Le SDK (autant que je sache) n'expose que l'événement de prise de vue sous la forme de l'objet en cours de création sur le système de fichiers de la caméra (à savoir la carte SD). Il n'y a pas un moyen dont je suis familier pour capturer du tampon. D'une certaine manière, cela est logique, car dans un environnement où il n'y a qu'une petite quantité de mémoire intégrée, il est important de garder la mémoire volatile libre pour pouvoir continuer à prendre des photos. Une fois que le tampon a été vidé dans la mémoire non volatile, vous pouvez alors interagir avec ces octets. Limiter, je sais, mais c'est ce que c'est.

+0

il y a un logiciel "DSLR Remote Pro", cette image de prendre du logiciel et enregistrer l'image sur PC même sans carte mémoire (carte SD), ce programme utilise aussi edsdk – ulduz114

2

Vous avez probablement rencontré le même problème qu'hier: l'appareil photo essaie de stocker l'image pour un téléchargement ultérieur, ne trouve aucune carte mémoire à stocker et rejette instantanément l'image. Pour que votre rappel se déclenche, vous devez configurer l'appareil photo pour qu'il enregistre les images sur le PC (kEdsSaveTo_Host) à un moment donné au cours de la procédure d'initialisation de la caméra. En C++, il a travaillé comme ceci:

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

Vous avez probablement besoin de construire un IntPtr pour cela. Au moins, c'est ce que fait Dmitriy Prozorovskiy (incité par un certain akadunno) dans this thread.

0

La question demande C#, mais en Java on devra setProperty comme:

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); 

Et le téléchargement habituelle fera

Questions connexes