完成:とりあえず、カメラのシャッターをパソコンで押してみよう。
◆前回までのブログで、パソコンからカメラを制御して、画像を取り込むまでのプログラムの説明は一通り済みましたので、メインとなるコード(Form1.cs)全体を貼り付けておきます。
using System; using System.Windows.Forms; using System.IO; using Nikon; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private NikonManager nknManager; private NikonDevice nknDevice; public Form1() { InitializeComponent(); // ニコンマネージャーの初設定("Type00**.md3"は、機種によって異なる。) nknManager = new NikonManager("Type0011.md3"); nknManager.DeviceAdded += new DeviceAddedDelegate(manager_DeviceAdded); nknManager.DeviceRemoved += new DeviceRemovedDelegate(manager_DeviceRemoved); } private void button1_Click(object sender, EventArgs e) { if (nknDevice == null) { return; } try { nknDevice.Capture(); } catch (NikonException ex) { MessageBox.Show(ex.Message); } } //デバイス接続時のイベントで呼び出されるメソッドです。 void manager_DeviceAdded(NikonManager sender, NikonDevice device) { this.nknDevice = device; //ラベルにデバイスネーム(カメラの種類:ここでは、”D5300”と表示される。) label1.Text = device.Name; // シャッターが押されて、撮影画像が準備出来たら呼び出されるメソッドを登録 device.ImageReady += new ImageReadyDelegate(device_ImageReady); } //デバイス切断時のイベントで呼び出されるメソッドです。 void manager_DeviceRemoved(NikonManager sender, NikonDevice device) { this.nknDevice = null; } //撮影画像がイメージバッファに準備出来た時に発火する(呼び出される)メソッドです。 void device_ImageReady(NikonDevice sender, NikonImage image) { //ここで、ファイルに保存しています。 using (FileStream stream = new FileStream("Image1.jpg", FileMode.Create, FileAccess.Write)) { stream.Write(image.Buffer, 0, image.Buffer.Length); } } } } |
0 件のコメント:
コメントを投稿