グラバースレッド (基本クラス)
Namespace: FVIL.ImagingAssembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)
Syntax
C# |
---|
public abstract class GrabberThread : IDisposable |
Visual Basic |
---|
Public MustInherit Class GrabberThread Implements IDisposable |
Remarks
このクラスは、ビデオ入力デバイスコントローラのラッパーです。
スレッドで画像取り込みを行い、イベントによりユーザーアプリケーションに通知します。
対応するビデオ入力デバイス:
- CFviGrabber
- CFviVideoRICE001
- CFviVideoGP440
- CFviVideoFVC05
- CFviVideoFVC06
- CFviVideoFVC07
- CFviVideoFVC08
- CFviVideoFHC3312
- CFviVideoFHC3313
このクラスのインスタンスを生成するには、 GrabberInfo クラスと スタティック関数の Create()()()() を使用してください。 生成されたインスタンスの Start()()()() メソッドを実行すると スレッドが作動し画像取り込みを開始します。 FrameValid イベントにハンドラを登録すると画像取り込みが完了するたびに通知を受け取ることができます。
C# | Copy |
---|---|
private void GrabberThread_Create() { FVIL.Imaging.GrabberInfo info = new FVIL.Imaging.GrabberInfo(@"C:\FAST\WIL\3.0.0\CameraFiles\DS\DS_USB0.xml", 2); FVIL.Imaging.GrabberThread thread = FVIL.Imaging.GrabberThread.Create(info); thread.FrameValid += new FVIL.Imaging.GrabberEventHandler(GrabberThread_FrameValid); thread.Start(); } private void GrabberThread_FrameValid(object sender, FVIL.Imaging.GrabberEventArgs e) { Console.WriteLine("TimeStamp={0}", e.TimeStamp); Console.WriteLine("Exception={0}", e.Exception); } |
シミュレータ:
デバイスが実装されていない環境で画像処理アプリケーションを起動する場合にはシミュレータをご利用ください。 GrabberInfo の SimulatorOption で使用の有無を指定して Create()()()() 関数を実行すると生成できます。 シミュレータはデバイスコントローラのスタブです。 デバイスの挙動を忠実に再現するものではありません。
Controller プロパティ:
このクラスは表示処理を抽象化することを目的としており、デバイス固有の機能を使用することを考慮していません。 デバイス固有の機能を使用する場合は、Controller プロパティから 対応するデバイスコントローラを抽出して使用してください。
C# | Copy |
---|---|
FVIL.Imaging.GrabberInfo info = new FVIL.Imaging.GrabberInfo(@"C:\FAST\WIL\3.0.0\CameraFiles\DS\DS_USB0.xml", 2); FVIL.Imaging.GrabberThread thread = FVIL.Imaging.GrabberThread.Create(info); // Controller if (thread.Controller is FVIL.DS.CFviGrabber) { FVIL.DS.CFviGrabber controller = (FVIL.DS.CFviGrabber)thread.Controller; controller.Timeout = 5000; controller.ImageType = FVIL.ImageType.UC8; Console.WriteLine("[1] Timeout = {0}", controller.Timeout); Console.WriteLine("[1] ImageType = {0}", controller.ImageType); } thread.Dispose(); |
出力結果:
[1] Timeout = 5000 [1] ImageType = UC8
下記のメンバを使用することでデバイスコントローラのメンバ(プロパティまたはメソッド)にアクセスすることができますが、 呼び出しのオーバーヘッドが大きいので推奨しません。 前述のように Controller プロパティからデバイスコントローラを抽出する方法を推奨します。
- プロパティの設定と取得
SetParam(String, Object, array<Object>[]()[][])
GetParam(String, array<Object>[]()[][]) - メソッドの実行
Invoke(String, array<Object>[]()[][]) - デバイス初期化コマンドの送信
SendCommand(String)
C# | Copy |
---|---|
FVIL.Imaging.GrabberInfo info = new FVIL.Imaging.GrabberInfo(@"C:\FAST\WIL\3.0.0\CameraFiles\DS\DS_USB0.xml", 2); FVIL.Imaging.GrabberThread thread = FVIL.Imaging.GrabberThread.Create(info); // SetParam { thread.SetParam("Timeout", 6000); thread.SetParam("ImageType", FVIL.ImageType.RGB24); Console.WriteLine("[2] Timeout = {0}", (int)thread.GetParam("Timeout")); Console.WriteLine("[2] ImageType = {0}", (FVIL.ImageType)thread.GetParam("ImageType")); } // SendCommand { thread.SendCommand("Timeout=7000"); thread.SendCommand("ImageType=RGB32"); Console.WriteLine("[3] Timeout = {0}", (int)thread.GetParam("Timeout")); Console.WriteLine("[3] ImageType = {0}", (FVIL.ImageType)thread.GetParam("ImageType")); } thread.Dispose(); |
出力結果:
[2] Timeout = 6000 [2] ImageType = RGB24 [3] Timeout = 7000 [3] ImageType = RGB32
Inheritance Hierarchy
System..::..Object
FVIL.Imaging..::..GrabberThread
FVIL.Imaging..::..GrabberThread