Question

Using the canon edsdk, I'm trying to detect what the camera image settings are because our application does work if the camera is set to RAW. I have no idea what to do with units gathered from getproperty and have no idea at all what getpropertydesc is any use for it looks like gibberish

Here's how I'm currently attemping this:

    EdsdkWrapper.EdsPropertyDesc desc;
    error = EdsdkWrapper.EdsGetPropertyDesc(camera, EdsdkWrapper.PropID_ImageQuality, out desc);

    if (error != EdsdkWrapper.EDS_ERR_OK)
    {
      throw new Exception("Failed to get prop desc for image quality: " + GetErrorMessage(error));
    }

    uint data;

    error = EdsdkWrapper.EdsGetPropertyData(camera, EdsdkWrapper.PropID_ImageQuality,0, out data);
    string propertyName = GetPropertyName(data);


    error = EdsdkWrapper.EdsSetPropertyData(camera, EdsdkWrapper.PropID_ImageQuality,0,4, EdsdkWrapper.ImageSize_Small);

    if (error != EdsdkWrapper.EDS_ERR_OK)
    {
      throw new Exception("Failed to get prop desc for image quality: " + GetErrorMessage(error));
    }

I know im not using desc but i would like to understand it as well. im getting camera busy error message 129 on the set property method thanks alot it driving me mental.

No correct solution

OTHER TIPS

EdsGetPropertyDesc can only be used to get a list of possible values (as IDs) with the following PropertyIDs:

  • kEdsPropID_AEModeSelect (only if the camera has no physical mode switch)
  • kEdsPropID_ISOSpeed
  • kEdsPropID_MeteringMode
  • kEdsPropID_Av
  • kEdsPropID_Tv
  • kEdsPropID_ExposureCompensation

Only the values of the returned list can be used to set given PropertyID. All other possible values are invalid for this camera in this mode. To know what the returned values stand for, see the documentation for a full list. For example, a camera can only have maximum Tv value of 1/4000 but there are values defined up until 1 /8000. So the retrieved list will only go up until 1/4000.

To get the image quality you already do the correct thing. The output value you get is any of the ImageQuality enum values. To set the image quality, you use the correct command but the wrong value. It should be any of the ImageQuality enum values too.

All of these commands and properties are described in the documentation btw.

Kind regards

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top