Note that there are some explanatory texts on larger screens.

plurals
  1. POc# Canon SDK: No callback after CameraCommand_TakePicture
    primarykey
    data
    text
    <p>i've been trying to make this work for some time now... read a lot of posts but none of them could fix this issue.</p> <p>I am connecting to a EOS 550D using the Canon SDK. I am running win7 64bit and Visual Studio c# 2010.</p> <p>What I do step by step is:</p> <p>--> 0 Init SDK</p> <pre><code> err = EDSDK.EdsInitializeSDK(); </code></pre> <p>--> 1 Getting camera list</p> <pre><code> err = EDSDK.EdsGetCameraList(out cameraList); </code></pre> <p>--> 2 Getting child count</p> <pre><code> err = EDSDK.EdsGetChildCount(cameraList, out cameraCount); </code></pre> <p>--> 3 If there is a child, get first child</p> <pre><code> err = EDSDK.EdsGetChildAtIndex(cameraList, 0, out cameraDev); </code></pre> <p>--> 4 Opening a session</p> <pre><code>err = EDSDK.EdsOpenSession(cameraDev); </code></pre> <p>--> 5 Telling the sdk to save images locally </p> <pre><code>IntPtr saveTo = (IntPtr)EDSDK.EdsSaveTo.Host; err = EDSDK.EdsSetPropertyData(cameraDev, EDSDK.PropID_SaveTo, 0, 4, saveTo); </code></pre> <p>--> 6 Setting the available capacity on the host machine</p> <pre><code> EDSDK.EdsCapacity capacity = new EDSDK.EdsCapacity(); if (err == EDSDK.EDS_ERR_OK) { capacity.NumberOfFreeClusters = 0x7FFFFFFF; capacity.BytesPerSector = 0x1000; capacity.Reset = 1; err = EDSDK.EdsSetCapacity(cameraDev, capacity); } </code></pre> <p>--> 7 Registring State event Handler</p> <pre><code>err = EDSDK.EdsSetCameraStateEventHandler(cameraDev, EDSDK.StateEvent_All, stateEventHandler, new IntPtr(0)); </code></pre> <p>--> 8 Registring Object Event Handler</p> <pre><code> EDSDK.EdsObjectEventHandler edsObjectEventHandler = new EDSDK.EdsObjectEventHandler(objectEventHandler); err = EDSDK.EdsSetObjectEventHandler(cameraDev, EDSDK.ObjectEvent_All, edsObjectEventHandler, IntPtr.Zero); </code></pre> <p>....</p> <p>I dont get any error while doing this, all seems to be fine.</p> <p>Here are my Handler </p> <pre><code> private uint objectEventHandler(uint inEvent, IntPtr inRef, IntPtr inContext) { Console.WriteLine("HALLLOOOOOOOOOO"); switch (inEvent) { case EDSDK.ObjectEvent_DirItemCreated: //this.invokeNewItemCreatedEvent(new NewItemCreatedEventArgs(getCapturedItem(inRef))); Console.WriteLine("Directory Item Created"); break; case EDSDK.ObjectEvent_DirItemRequestTransfer: Console.WriteLine("Directory Item Requested Transfer"); break; default: Console.WriteLine(String.Format("ObjectEventHandler: event {0}, ref {1}", inEvent.ToString("X"), inRef.ToString())); break; } return 0x0; } public uint stateEventHandler(uint inEvent, uint inParameter, IntPtr inContext) { Console.WriteLine("stateEventHandler " + inEvent); switch (inEvent) { case EDSDK.StateEvent_JobStatusChanged: Console.WriteLine(String.Format("There are objects waiting to be transferred. Job status {0}", inParameter)); break; case EDSDK.StateEvent_ShutDownTimerUpdate: if (inParameter != 0) Console.WriteLine(String.Format("shutdown timer update: {0}", inParameter)); break; case EDSDK.ObjectEvent_DirItemRequestTransfer: //WHAT I NEED!!! Console.WriteLine("Hallo DirItemRequestTransfer"); //DownloadImage(obj); break; default: Console.WriteLine(String.Format("StateEventHandler: event {0}, parameter {1}", inEvent, inParameter)); break; } return 0; } </code></pre> <p>...</p> <p>So now my problem is that none of the handler is ever called. Don't know why, I searche the net fpr quite some time, tried different approaches but did not get the callback...</p> <p>Here is my method calling the take picture command:</p> <pre><code> public void takePic() { if (cameraOpened) { Console.WriteLine( "taking a shot"); err = EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_TakePicture, 0); if (err != EDSDK.EDS_ERR_OK) Console.WriteLine("TakeCommand Error: " + err.ToString()); Console.WriteLine("Finished taking a shot"); } } </code></pre> <p>Maybe someone has an idea what I could try to make this work?</p> <p>Thanks in advance!</p> <p>Best regards, Tobias</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload