佳能EDSDK:在LiveView中拍照会永远打破LV

时间:2017-02-22 09:59:23

标签: edsdk canon-sdk

我的应用程序使用C#和相当轻量级的EDSDKWraper控制相机(我已经修改了一下)。我已经可以控制基本上所有东西,比如LiveView,聚焦(自动+手动),设置和阅读各种属性和拍摄图片,可选择自动聚焦支架/堆叠。

但是,有一个问题:当我启动LiveView然后使用标准方式拍照时

SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Completely_NonAF);
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF);

可行,我可以使用Download + DownloadCompleteDownloadCancel功能下载图片或取消下载。不幸的是,之后不再能够获得LiveView图像,DownloadEvfImage会返回OBJECT_NOT_READY并让它永远恢复。

唯一的出路是再次停止和启动LiveView或使用DoEvfAF命令启动LiveView自动对焦。但我想避免这种情况。

在佳能5D Mark IV和5D Mark III上都会发生这种情况,同样的问题也发生在一个完全不同的C#框架上,我刚刚从网上下载了一个不同的例子。 EOS Utility似乎工作正常,所以似乎有一些方法。

“LiveView +再次拍照+ LiveView”是否可以在您的应用中运行,无论是C#还是C ++?我需要做一些技巧吗?

我已经花了很多时间尝试查找错误,比如没有发布数据,并在网上搜索答案,但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:2)

终于找到了正在发生的事情!因此,为了让其他人知道,问题是相机在其液晶显示屏上拍摄后显示照片(即普通评论)。在此显示期间,LiveView不起作用! EOS实用程序没有将图像保存在相机卡上,因此无需查看,LV继续不间断。

无论如何,解决方案/解决方法是摆脱LCD上的已审阅图像。到目前为止,我已经找到了两种方法可以让LV再次无缝工作,而无需关闭它并打开镜子:

模拟快门按钮的HALF按下

即。这个简单的代码将LV返回到正常工作模式:

SendCommand(Camera.Handle, PressShutterButton, ShutterButton_Halfway_NonAF);
SendCommand(Camera.Handle, PressShutterButton, ShutterButton_OFF);

使用kEdsPropID_Evf_OutputDevice标记播放

您可以将LV输出更改为相机而不是PC,关闭PC输出,然后再次打开PC输出。镜子不会移动。这意味着首先将kEdsPropID_Evf_OutputDevice设置为KEdsEvfOutputDevice_TFT,然后立即将其设置为agan,但这次是KEdsEvfOutputDevice_PC(或KEdsEvfOutputDevice_TFT | KEdsEvfOutputDevice_PC,如果您想保留相机输出)。