2015年3月12日木曜日

カメラをPCからコントロールすると言ったな

送信者 他いろいろ


 作りました。
 室内撮影だし、撮影条件さえ決まれば、露出なんて変える必要はないけど、読み込めるとなれば、書き込みも出来るから、機能に加えました。
 露出計のタイトルをEVとしちゃったけど、意味的には微妙だなぁ(汗

 ライブビューの画面サイズは自由に変更できるので、メインディスプレイに表示させた状態でセルフ撮影とかやれますなぁと。
 セルフ撮影と言えば、ライブビューで繋ぐと、レリーズが使えなくなると言う現象が発覚したので、この辺の解決のために、ゲームパッドからコントロールできるようにしました。

 ゲームパッドからのコントロールなら、DirectX使えって話なんですが、原因不明のエラーしか起こらないので、もうさくっと諦めまして、ゲームパットで特定のキー入力が出来るって言うユーティリティを使って、各種操作を実現しました。

 あと、セルフ撮影となると、インターバルタイマーが必要だろうと言うことで、任意の間隔で任意の枚数切れる機能も付けました。


 コードの方ですが、
 例えば、絞りに関しては、以下の一行で読み込み。
Dim Aperture = device.Get(eNkMAIDCapability.kNkMAIDCapability_Aperture)
 Apertureは、「Aperture(0)」が開放絞りとなり、「Aperture(Aperture.Length - 1)」が最小絞りになります。
 現在の絞り値は、「Aperture.index」なので、「Aperture(Aperture.index)」でString型の絞り値が得られます。

 絞り値の設定は、「Aperture.index 」 で、「n=0~Aperture.Length - 1」までの任意の自然数を入れれば、好きな値に設定出来ます。
Aperture.index = 「任意の数字」
device.Set(eNkMAIDCapability.kNkMAIDCapability_Aperture, Aperture)
 で、絞り値を設定。

Dim batteryLevel As Integer
Dim ExposureStatus As Single
batteryLevel = device.GetInteger(eNkMAIDCapability.kNkMAIDCapability_BatteryLevel)
ExposureStatus = device.Get(eNkMAIDCapability.kNkMAIDCapability_ExposureStatus)
 で、バッテリー残量と、露出インジケーターの読みが出てきます。

 ざっくりこんな感じですかねぇ。
 その他は、ドキュメントとか、適当にググったりして何とかなる感じです。

 下の名前モロバレだけど、まーいっかー