グラバースレッド (基本クラス)

Namespace: FVIL.Imaging
Assembly: 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

このクラスは、ビデオ入力デバイスコントローラのラッパーです。
スレッドで画像取り込みを行い、イベントによりユーザーアプリケーションに通知します。
対応するビデオ入力デバイス:


このクラスのインスタンスを生成するには、 GrabberInfo クラスと スタティック関数の Create()()()() を使用してください。 生成されたインスタンスの Start()()()() メソッドを実行すると スレッドが作動し画像取り込みを開始します。 FrameValid イベントにハンドラを登録すると画像取り込みが完了するたびに通知を受け取ることができます。

C# Copy imageCopy
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);
}

シミュレータ:

デバイスが実装されていない環境で画像処理アプリケーションを起動する場合にはシミュレータをご利用ください。 GrabberInfoSimulatorOption で使用の有無を指定して Create()()()() 関数を実行すると生成できます。 シミュレータはデバイスコントローラのスタブです。 デバイスの挙動を忠実に再現するものではありません。


Controller プロパティ:

このクラスは表示処理を抽象化することを目的としており、デバイス固有の機能を使用することを考慮していません。 デバイス固有の機能を使用する場合は、Controller プロパティから 対応するデバイスコントローラを抽出して使用してください。

C# Copy imageCopy
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 プロパティからデバイスコントローラを抽出する方法を推奨します。

C# Copy imageCopy
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

See Also