Устройство Canon EDSDK занято не может отменить половину выполненных передач изображений
В EDSDK, если во время передачи изображения возникает ошибка (т. Е. Соединение потеряно, ошибка приложения,...), когда приложение перезапускается и повторно подключается к устройству, невозможно сделать новый снимок, потому что EdsSendCommand(hdev,kEdsCameraCommand_TakePicture,0) всегда возвращает EDS_ERR_DEVICE_BUSY,
Это потому, что предыдущие данные изображения находятся в памяти камеры, даже если я выключаю камеру. Единственное решение - снять батарею!!! Есть ли у кого-нибудь лучшее решение (softwtare) для отправки своего рода RESET и выпуска всех данных изображения в память, ожидающих передачи, и позволить камере прийти в нормальные условия работы.
Я запускаю SDK в следующих режимах. Сначала я устанавливаю свойство EdsdkWrapper.PropID_SaveTo: EdsdkWrapper.EdsSaveTo.Host.
EdsSendCommand EdsdkWrapper.CameraCommand_TakePicture
Вопросы: Как перезагрузить камеру после внезапного завершения, чтобы она могла забыть обо всех половине выполненных передач? Обратите внимание, что у меня нет ссылки IntPtr после внезапного завершения. (т.е. я не могу вызвать EdsdkWrapper.EdsDownloadComplete(imageReference))
1 ответ
Возможно, это связано с тем, что ваша программа завершает работу до того, как будет выполнена функция EdsTerminate(). Вы должны убедиться, что эта функция выполняется до завершения вашей программы. Или более грубым решением было бы иметь другую программу только с функцией EdsTerminate. Вы можете запустить эту программу перед повторным запуском приложения, если произошло внезапное завершение.