VCDプロパティの設定方法
C#,VB.NetにてどのようにしてVCDプロパティのインターフェースを取得し、値やプロパティの自動設定などのエレメントを調節する方法に関して説明します。
Software | IC Imaging Control 3.4, Visual Studio™ 2019 |
---|---|
サンプル(C#) | VCD_property.zip |
手順1
IC Imaging Contorol 3.4をインストールした時にVCD Property Inspectorがインストールされていますので、そのアプリを立ち上げてカメラを選択すると設定できるプロパティ値が出てきます。
手順2
アプリ起動後、ダイアログ画面にてTheImagingSource社のカメラを選択する。
手順3
設定できるプロパティ値の確認する。
下記の通り、VCD Property Inspectorが起動する。VCDプロパティはツリー構造で構成されており、名前と要素(値やスイッチなど)をセットで持ったオブジェクト(VCDPropertyItem)です。
そのオブジェクトの要素(VCDPropertyElement)には 、要素を調整する為のインターフェースのセットを持っており、簡単にプロパティ値にアクセスできるようになっています。
手順4
プロパティを操作する為には適切な項目、要素、インターフェースを呼び出す必要があります。そのためにItem ID、Element ID、Interface ID確認します。
例:Gain VCDElement_Value AbsoluteValueの場合(上図の赤枠を参照)
Item ID :VCDID_Gain
Element ID :VCDElement_Value
Interface ID:VCDInterface_AbsoluteValue
手順5
値と自動設定のインターフェースとなるグローバル変数を宣言してください。
プロパティを操作する為には適切な項目、要素、インターフェースを呼び出す必要があります。Switch、Range、AbsoluteValue、Button、MapStringのどの型なのかを確認し、それぞれに対応した呼び出し方、また関連するユーザーコントロールを初期化するためにそれらインターフェースの現在の状態を取得します。
private TIS.Imaging.VCDRangeProperty GainRange;
private TIS.Imaging.VCDSwitchProperty GainSwitch;
private TIS.Imaging.VCDAbsoluteValueProperty GainValue;
private TIS.Imaging.VCDMapStringsProperty WhiteBalancMapStrings;
private TIS.Imaging.VCDButtonProperty SoftwareTrigger;
手順6
変数型 VCDPropertyItemを宣言し、VCDPropertyItems.FindItem メソッドを使って適切なプロパティに割り当てます。呼び出されるプロパティ項目はIDで指定する必要があります。今回の場合は"Gain"のVCDID_Gain等になります。
さらに、プロパティは複数のエレメントから構成されています。エレメントには値や自動設定、ワンプッシュ動作などのパラメータがあります。プロパティの調整をするのにはインターフェースが使われ、プロパティ項目のエレメントより取得することが可能です。
取得したインターフェースを用いてカメラのプロパティ値を制御することができます。
Gain = icImagingControl1.VCDPropertyItems.FindItem(TIS.Imaging.VCDIDs.VCDID_Gain);
GainRange = (TIS.Imaging.VCDRangeProperty)Gain.Elements.FindInterface(
TIS.Imaging.VCDIDs.VCDElement_Value + ":" +
TIS.Imaging.VCDIDs.VCDInterface_Range);
GainSwitch = (TIS.Imaging.VCDSwitchProperty)Gain.Elements.FindInterface(
TIS.Imaging.VCDIDs.VCDElement_Auto + ":" +
TIS.Imaging.VCDIDs.VCDInterface_Switch);
GainValue = (TIS.Imaging.VCDAbsoluteValueProperty)Gain.Elements.FindInterface(
TIS.Imaging.VCDIDs.VCDElement_Value + ":" +
TIS.Imaging.VCDIDs.VCDInterface_AbsoluteValue);
WhiteBalance = icImagingControl1.VCDPropertyItems.FindItem(TIS.Imaging.VCDIDs.VCDID_WhiteBalance);
WhiteBalancMapStrings = (TIS.Imaging.VCDMapStringsProperty)WhiteBalance.Elements.FindInterface(
TIS.Imaging.VCDIDs.VCDElement_WhiteBalanceMode + ":" +
TIS.Imaging.VCDIDs.VCDInterface_MapStrings);
SoftwareTrigger = (TIS.Imaging.VCDButtonProperty)icImagingControl1.VCDPropertyItems.
FindInterface(TIS.Imaging.VCDIDs.VCDID_TriggerMode,
TIS.Imaging.VCDIDs.VCDElement_SoftwareTrigger,
TIS.Imaging.VCDIDs.VCDInterface_Button);
下記のリファレンスマニュアルにてVCDプロパティの基本機能について記載しております。
プログラマーズガイド:VCDプロパティの基本機能
IC Imaging Control_Ver3.4(C#/VB.NET) APIリファレンスマニュアル