2017-02-22 4 views
1

私のアプリケーションはC#とかなり軽量のEDSDKWraper(これは少し修正済みです)を使ってカメラを制御しています。私はすでにLiveViewのようなすべてのものを基本的に制御することができます(自動+手動)、さまざまなプロパティの設定と読み取り、写真の撮影、オプションで自動フォーカスブラケット/スタッキング。Canon EDSDK:LiveViewで写真を撮ると永遠にLVが壊れる

しかし、問題がある:私はライブビューを開始し、標準的な方法

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

を使用して写真を撮るとき、それは動作しますが、私はDownload + DownloadCompleteまたはDownloadCancelを使用してダウンロードする画像をダウンロードしたり、取り消すことができます機能。残念ながら、それ以降はLiveViewイメージを取得することはできません。DownloadEvfImageOBJECT_NOT_READYを返し、永遠に戻します。

唯一の方法は、LiveViewをもう一度停止して開始するか、DoEvfAFコマンドを使用してLiveViewのオートフォーカスを開始することです。しかし、私はそれを避けたいと思います。

これはCanon 5D Mark IVと5D Mark IIIの両方で発生します。まったく異なるC#フレームワークでも同じ問題がWebからダウンロードしたばかりの別の例でも発生します。しかし、EOSユーティリティはうまく動作しているようですので、何らかの方法があるようです。

C#またはC++のいずれの場合でも、「LiveView +撮影+ LiveViewを再度」もアプリで動作しますか?私は実行する必要があるいくつかのトリックはありますか?

私は既にデータを公開しておらず、ウェブ上で回答を探しているなどバグを指摘しようと多くの時間を費やしていますが、これまでのところ運がありません。

答えて

2

最終的に何が起こっているのかが分かりました。だから、他の人に知らせるためには、撮影がLCDで撮影された後にカメラが写真を表示していたということだった(つまり普通のレビュー)。この表示中、LiveViewは機能しません! EOSユーティリティはカメラのカードに画像を保存しなかったため、レビューするものはなく、LVは中断されませんでした。

とにかく、解決策/回避策は、レビューされた画像をLCDで取り除くことです。これまでのところ、私は再びそれをオフにする必要がなく、seamslessly作業LVを取得します二つの方法を発見してきたミラーぴしゃり:

は、シャッターボタンの半押しをシミュレートし

すなわちPCの出力をオフにし、あなたが代わりにPCのカメラにLVの出力を変更することができます

kEdsPropID_Evf_OutputDeviceフラグと

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

プレイ、そして:この単純なコードでは、通常の動作モードにLVを返します。 PCの電源を再びオンにします。ミラーは動かないでしょう。これは最初にkEdsPropID_Evf_OutputDeviceKEdsEvfOutputDevice_TFTに設定してすぐにaganに設定しますが、今度はKEdsEvfOutputDevice_PC(またはカメラ出力を保持したい場合はKEdsEvfOutputDevice_TFT | KEdsEvfOutputDevice_PC)に設定してください。

関連する問題