2013-12-02 3 views
2

Я использую Canon SDK 2.1, и я пытаюсь сделать снимок в камере из кода C#. я начал сеанс (EdsOpenSession) и все работает отлично с этой строки кода:Canon EDSDK Command TakePicture блокирует все после ошибки фокуса

EDSDK.EdsSendCommand(cameraDev, EDSDK.CameraCommand_TakePicture, 0); 

камера делает снимок и сохраняет его на карту памяти.

Проблема здесь: если есть ошибка автофокусировки (например, крышка объектива включена), камера получает «BUSY» и никогда не возвращается.

Также, если я пытаюсь закрыть EDSDK функциями EdsCloseSession или EdsTerminateSDK, они блокируют. Единственное, что нужно сделать, это перезапустить приложение и камеру. Я использую EOS 100D.

Что я могу сделать, чтобы проигнорировать эту ошибку автофокусировки и попытаться сделать еще одну снимок?

ответ

0

У меня такая же проблема с Canon EOS 1100D, но я нашел http://digicamcontrol.com, который с открытым исходным кодом. Им удалось сделать работу автофокуса, но я не нашел, что именно они сделали. Может быть, вы можете это найти. Если да, то, пожалуйста, поделитесь решением.

+0

Я посмотрю на него. – Magistratsbeamter

+0

Существует такое же поведение с DigiCamControl ... А также то же самое в некоторых других инструментах с открытым исходным кодом, которые я тестировал в последние дни. На данный момент я не видел решения с автофокусом для этой проблемы. Для меня его можно включить AF, im используя фиксированные расстояния для создания фотографий. – Magistratsbeamter

1

У меня также была эта проблема.

Я решил это, отправив кнопку полутона, чтобы сфокусироваться, а затем нажмите кнопку полной кнопки, чтобы сделать снимок, если это удастся.

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 
} 
Смежные вопросы