我使用的是Canon SDK 2.1,我正试图用C#代码在相机前拍照。我开始了一个会话(EdsOpenSession),使用这行代码一切都很好:
EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_TakePicture, 0);
相机拍摄一张照片并将其存储在存储卡上。
问题就在这里:如果出现AF错误(例如,镜头盖打开),相机就会"忙碌",再也回不来了。
此外,如果我试图用函数EdsCloseSession或EdsTerminateSDK关闭EDSDK,它们会阻止。唯一能让它重新启动的就是重新启动应用程序和相机。我使用的是EOS100D。
我该怎么办才能忽略这些AF错误并尝试拍摄另一张照片?
我刚刚也遇到了这个问题。
我已经解决了这个问题,如果成功的话,先按半键对焦,然后按全键拍照。
try
{
EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_PressShutterButton, 1); // Half
EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_PressShutterButton, 3); // Completely
}
finally
{
EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_PressShutterButton, 0); // Off
}
我对佳能EOS 1100D也有同样的问题,但我发现http://digicamcontrol.com它是开源的。他们已经设法使自动对焦工作,但我还没有发现他们到底做了什么。也许你能找到它。如果你找到了,请分享解决方案。