デバイスの開閉
概要
IC Imaging Controlを使用してカメラデバイスの開閉操作を操作しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2022 |
---|---|
サンプル(C#) | open_and_close_device_cs_3.5.zip |
サンプルツールの外観
解説
[buttonOpen_Click] メソッド
[Open Device]ボタンをクリックしたときに発火する処理です。
private void buttonOpen_Click(object sender, System.EventArgs e)
{
// ① デバイスを指定して開く
icImagingControl1.Device = "DFK 33UX273";
// ② デバイスダイアログを使ってカメラを開く
icImagingControl1.LoadShowSaveDeviceState("DeviceState.xml");
// ③ XMLファイルからデバイス設定を読み込む
icImagingControl1.LoadDeviceStateFromFile("DeviceState.xml", true);
// デバイスが有効かどうかを確認する
if (icImagingControl1.DeviceValid)
{
// ライブビデオが実行中であれば停止する
if (icImagingControl1.LiveVideoRunning)
icImagingControl1.LiveStop();
// ライブビデオを開始する
icImagingControl1.LiveStart();
}
}
カメラを開くのは下記のいずれかを選んでください。
カメラを直接指定して開きます。
icImagingControl1.Device = "DFK 33UX273";
デバイスダイアログを使用してカメラを開きます。
icImagingControl1.LoadShowSaveDeviceState("DeviceState.xml");
デバイス状態をxmlファイルに保存し、再読込できるようにします。
XMLファイルからカメラ設定を読み込みます。
icImagingControl1.LoadDeviceStateFromFile("DeviceState.xml", true);
第2引数を「true」に指定することでカメラをオープンすることができます。
ICImagingControl.LoadDeviceStateFromFile Method
IC Imaging Control_Ver3.5(C#/VB.NET) APIリファレンスマニュアル
最後にデバイスが有効ならライブ撮影を開始します。
if (icImagingControl1.DeviceValid)
{
if (icImagingControl1.LiveVideoRunning)
icImagingControl1.LiveStop();
icImagingControl1.LiveStart();
}
[buttonClose_Click] メソッド
[Close Deivce]ボタンをクリックしたときに発火する処理です。
private void buttonClose_Click(object sender, System.EventArgs e)
{
try
{
if (icImagingControl1.LiveVideoRunning)
{
icImagingControl1.LiveStop();
icImagingControl1.Device = ""; // デバイスをクローズ
}
}
catch (Exception ex)
{
MessageBox.Show("デバイスを閉じる際にエラーが発生しました: " + ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
LiveStartメソッドで開始されたライブ画像の表示を停止します。
if (icImagingControl1.LiveVideoRunning)
{
icImagingControl1.LiveStop();
icImagingControl1.Device = ""; // デバイスをクローズ
//icImagingControl1.Dispose(); // すべてのリソースを解放
}
ライブ画像の表示を停止したあと、「icImagingControl1.Device = ""」でデバイスを解放することができます。
なお、Dispose()メソッドは、icImagingControl1オブジェクトで使用されているリソースを解放します。
これにより、使用中のメモリやハードウェアリソースが適切に解放されます。一度Dispose()を呼び出すと、icImagingControl1オブジェクトは無効になるため、それ以降操作を行うとエラーが発生しますので注意してください。
DeviceとDisposeの呼び出しタイミングに関しては下記の通りです。
項目 | icImagingControl1.Device | icImagingControl1.Dispose() |
---|---|---|
目的 | デバイスの選択やリセット | オブジェクト全体のリソース解放 |
操作対象 | デバイス(カメラなど) | icImagingControl1 オブジェクト全体 |
使用タイミング | デバイスの切り替え時やリセット時 | アプリケーション終了時やオブジェクトが不要になったとき |
影響範囲 | 指定されたデバイスの操作に限定 | icImagingControl1 が使用するすべてのリソース |
リソース解放 | カメラの接続解除のみ | メモリやハードウェアリソースを完全に解放 |
エラーはtry-catchで保護します。
catch (Exception ex)
{
MessageBox.Show("デバイスを閉じる際にエラーが発生しました: " + ex.Message);
}