デバイスプロパティ設定の保存と復元
ICImagingControlでデバイスのプロパティをファイルに保存、復元する方法を示しています。
Software | IC Imaging Control 3.4, Visual Studio™ 2019 |
---|---|
サンプル(C#) | save_restore_properties_cs_3.4.zip |
ICImagingControlにはビデオキャプチャデバイスの現在のプロパティ値をファイルとして保存する方法と、その保存されたファイルからデバイス設定を復元する方法が用意されています。
以下の関数を使用します。
SaveDeviceStateToFile
LoadDeviceStateFromFile
"Device..."ボタンをクリックするとビデオキャプチャデバイス選択のダイアログが開きます。
"Properties..."ボタンをクリックすることで選択されたデバイスのプロパティ設定ウィンドウを開きます。
"Save Settings..." ボタンがクリックされると、プログラムはまずビデオキャプチャデバイスが有効かどうかを.DeviceValidによりチェックします。その後、CommonDialog1.ShowSave関数にてファイルをセーブするダイアログウィンドウを開きます。.SaveDeviceStateToFileをコールすることで、指定されたファイルに現在のパラメータを書き込みます。
private void btnSaveSettings_Click(object sender, System.EventArgs e)
{
if( icImagingControl1.DeviceValid )
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.AddExtension = true;
dlg.DefaultExt = "xml";
dlg.Filter = "Configuration Files (*.xml)|*.xml||";
dlg.OverwritePrompt = true;
dlg.RestoreDirectory = true;
dlg.Title = "Save Settings";
if( dlg.ShowDialog() == DialogResult.OK )
{
icImagingControl1.SaveDeviceStateToFile( dlg.FileName );
}
}
}
"Restore Settings..." がクリックされると、プログラムは現在のイメージデータストリームを停止します(.LiveStop)。次にCommonDialog1.ShowOpenによりファイル選択のダイアログウィンドウを開きます。.LoadDeviceStateFromFileのコールにより、ICImagingControlは選択されたファイルからパラメータデータを取得し、現在開かれているデバイスに設定値を割り当てるようとします。
もし.LoadDeviceStateFromFileが失敗すると、例外エラーが出力されます。
そのため、.LoadDeviceStateFromFileはtry ... catchブロック内で使用するようにします。最後に.LiveStartをコールして、新しいパラメータに設定されたイメージストリームを再開します。
private void btnRestoreSettings_Click(object sender, System.EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Configuration Files (*.xml)|*.xml||";
dlg.RestoreDirectory = true;
dlg.Title = "Restore Settings";
if( dlg.ShowDialog() == DialogResult.OK )
{
try
{
// デバイスが動作中であれば停止します。
if (icImagingControl1.LiveVideoRunning)
icImagingControl1.LiveStop();
// コンフィギュレーションファイルを Load します。
icImagingControl1.LoadDeviceStateFromFile(dlg.FileName, true);
// ライブビデオを再開します。
icImagingControl1.LiveStart();
}
catch( TIS.Imaging.ICException ex)
{
MessageBox.Show(ex.Message,"Failed to Open Device",MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}