Assembly: FVILdevice (in FVILdevice.dll) Version: 3.1.0.0 (3.1.0.5)
Syntax
C# |
---|
public class CFviVideoGP440 : CFviVideo |
Visual Basic |
---|
Public Class CFviVideoGP440 Inherits CFviVideo |
Remarks
PCI Express×1 仕様 アナログ画像入力ボード(FV-GP440)を操作する為のクラスです。
FV-GP440は、PCI Express Base Specification Rev.1.0a以降に準拠した、アナログ画像入力ボードです。 カメラ接続コネクタは、4チャネル用意されており、各チャネルが独立した非同期取り込みを可能としています。
■ トピック
カメラの接続 :
FV-GP440にはカメラ接続コネクタ(12pinコネクタ)が4つあり、それぞれに異なるカメラを接続することが可能です。 CFviVideoGP440のオブジェクトは、使用するカメラ分を必要とし、1オブジェクトにつき、1台のカメラを操作することが可能です。 このとき、各チャネルは非同期に動作し、他チャンネルが画像入力中でも、別チャネルで画像入力を行うことが可能です。 尚、一部の高速なカメラにおきましては、複数チャネルから同時に画像入力を行えない場合がございますので、ご注意ください。
FV-GP440のオープン :
FV-GP440を使用するためには、 Open(Int32, Int32) を用いて、ボードのオープンを行わなければいけません。 どのメソッドも オープンが成功していなければ動作しないため、必ず一番最初にオープンを行うようにしてください。
Open(Int32, Int32) では、PC上の、どのFV-GP440をオープンするのか。どのチャネルをオープンするのかを引数で指定します。
PC上に存在する複数のFV-GP440を識別するために、FV-GP440上のボードID指定スイッチ(SW1)で一意の値を設定する必要があります。
(注)FV2310-XPeなどのFAST製画像処理装置において、複数枚のFV-GP440が搭載されて出荷される場合、
IDは0, 1, 2・・・と順番に割り振られて出荷されます。
引数 id は、オープンしたいボードのID (ボード上のSW1)を指定します。-1を指定した場合、未オープンで最もIDの小さいボードが選択されます。
引数 ch は、オープンしたいチャネルを指定します。-1を指定した場合、未オープンでもっとも値の小さいチャネルがオープンされます。
オープン後、使用するカメラに合った、カメラ設定ファイルを LoadIniFile(String) メソッドで 読み込むことにより、FV-GP440の設定が使用するカメラに合った設定値となります。
画像取り込み方法(単発取り込み):
単発取り込みとは、カメラから1フレーム入力することです。
GrabImageSync(CFviImage) は、 画像を 1 枚取り込むための関数です。 GrabImageSync(CFviImage) 呼び出し後、 画像取り込みが完了するまで、関数から抜けてきません。
GrabImageASync(CFviImage) は、 画像を 1 枚取り込むための関数で、 GrabImageASync(CFviImage) 呼び出し後、 即関数から抜けてきます。 GrabImageASync(CFviImage) は、 画像取り込み中に別の操作を行うことが可能です。 画像取り込みが完了したことを確認するために、 GrabWait()()()() または GrabStatus を使用します。
前者は、取り込みが完了するまで戻ってきません。 後者は、現在の取り込み状況を調べ、現在取り込み中なのか、取り込みが完了したのかを取得できます。 両関数ともの他の画像入力ボードでも実装されており、もっとも使いやすい画像取り込み関数です。 しかしながら、画像メモリのロックを画像入力ごとに行うため、 大きな画像サイズの場合、オーバーヘッド(数百us)が生じてしまう場合があります。 オーバーヘッドが気になる場合は、連続取込用関数をご使用ください。
画像入力を行う際は、画像オブジェクトの画像サイズ、BPP、画像タイプをカメラからの入力サイズに合わせる必要があります。 画像メモリのサイズ変更は、 ChangeImageSize(CFviImage) をご利用ください。
画像取り込み方法(連続取り込み):
連続取り込みとは取り込み開始時点からフレーム抜けすることなく、連続で画像を入力することです。 CFviContinuousGrabGP440 は連続取り込み機能をパッケージングしたクラスです。 このクラスの ContinuousGrab プロパティから 連続取り込みクラスのインスタンスを得る事ができます。 取り込み枚数を 1 枚にすることで、単発取り込みを行うことが可能です。 実際に使用する際は、画像メモリのロック→連続取り込みの開始→取り込み完了待ち→画像メモリのアンロックという手順 を踏まなければなりません。
- FV-GP440をオープン(Open()()()())します。 -
- 取り込み先の画像オブジェクトのコレクション(List)を Images プロパティ に設定します。 各画像オブジェクトの画像サイズ、BPP、画像タイプを調整しておいてください。 画像メモリのサイズ変更は、 ChangeImageSize(CFviImage) をご利用ください。 -
- MemoryLock(UInt32) メソッドで、取り込み先の画像メモリをロックします。 -
-
連続取り込みを実行します。
- 同期取り込み(GrabSync(UInt32))の場合、 画像取り込みが完了するまで待機します。 中断するには、 StopCapture()()()() または AbortCapture()()()() を使用します。 -
- 非同期取り込み(GrabASync(UInt32))の場合、 画像取り込みの完了を待たず、即時 制御が戻ります。 画像取り込みが完了したことを確認するために、 GrabWait()()()() または GrabStatus を使用します。 -
- 画像取り込みが終了し、画像メモリのロックが必要なくなった場合は、 画像メモリのアンロック(MemoryUnlock()()()())を 行ってください。 尚、ロックされたまま、画像入力ボードをクローズした場合、自動的にアンロックを行うようになっています。
【連続取り込み開始までの手順】
【連続取り込み中の動作】
トリガ動作:
トリガモードは Trigger で行い、 ノーマル、内部トリガ、外部トリガを切り替えることが可能です。 ノーマルモードとは、カメラから常に映像出力される画像を入力するモードの事を言います。 最も基本的な取り込みで、静止した物体の単発取り込みや通常の連続取り込みを行うのに最適です。 移動している物体の単発取り込みは、タイミングを制御するのが難しく、あまり得意ではありません。
内部トリガモードとは、画像入力ボードからトリガ信号をカメラに送り、 そのタイミングでカメラが露光を開始するモードのことを言います。 カメラはトリガモードに設定されていなければなりません。 移動している物体の画像取り込みを得意としていますが、 連続取り込みはフルフレームの速度が出ないためあまり得意ではありません。
外部トリガモードとは、画像入力ボードに対して外部信号(外部センサーなど:TTLレベル)が入ったときに、 カメラに対してトリガ信号を出力し、そのタイミングでカメラが露光を開始するモードのことを言います。 内部トリガは CPU から取り込み開始命令を出すのに対し、外部トリガは外部装置から取り込み開始命令を出す点が違っています。 移動している物体の画像取り込みを得意としていますが、連続取り込みはフルフレームの速度が出ないためあまり得意ではありません。
トリガマスク期間中のトリガ動作について:
[Driver Version 1.1.0.22以前] 単発取込み内部トリガモード時、トリガマスク期間中に入力されたトリガ(画像取込み命令)は無効になります。
[Driver Version 1.2.0.25以降] 単発取込み内部トリガモード時、トリガマスク期間中に入力されたトリガ(画像取込み命令)が入った場合、 一旦ペンディングにしてマスク期間終了後にトリガを発行します。