バッファ集録にてGet Buffer.viとExtract Buffer.viの違いは何ですか?



使用ソフトウェア:
使用ソフトウェア・バージョン: 2.6
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
バッファ集録にてGet Buffer.viとExtract Buffer.viの違いは何ですか?

解決策:
Get Buffer


単一集録の場合使用します。集録されている全てのバッファを返します。「Get Buffer」関数は初期に構成したバッファ数の全ての集録が終り次第、イメージをひとまとめに返します。

添付されているサンプル(LL Sequence in IMAQ Vision display.vi)の場合は「Get Buffer」関数の後、WhileLoopの中の「IMAQ Window Draw」を用い集録した画像を表示しています。これは単一集録ですので、実際に集録されるイメージは「Number of Buffer」にて指定されている分(このサンプルでは10個)のみになります。


Extract Buffer

連続集録(Ring集録)の場合使用します。「Buffer to Extract」に指定されている番号のバッファにアクセスし、その中のイメージのみ返します。

添付されている、サンプル(Extract Buffer - LL Ring in IMAQ Vision display.vi)はRing集録で、連続的に画像を集録し、10個のバッファの中に連続的にイメージをためます。STOPボタンが押さえるまで集録と表示を続け、実際に集録した画像の数は「LastValidBuffer」に現れます。

「Extract to Buffer」関数はWhileLoopの中に有り、WhileLoopの反復数が「Buffer to Extract」として設定されている為、ループが回転するたび、ループの反復数番目のバッファにアクセスし、そのイメージを返します。即ち、連続的に集録した画像を連続的に表示する事が出来ます。

もし、「Extract to Buffer」にて指定されているバッファの番号が現在アクセス中のバッファの番号より大きい場合、「Extract to Buffer」関数は指定されているバッファが集録されるまで待ち、また、そのイメージが上書きされないようにロック(lockを)をかけます。

例)
---------------------------------------------------------------------------------------------------
現在の集録中のバッファ=1 
→ 現在の集録中のイメージはバッファ1番にたまる「Buffer to Extract」=4 
→ バッファ4にアクセスし、そのイメージを表示しようとする

「Extract to Buffer」関数は4番のバッファにイメージが集録されるまで待ちます。

もし、バッファ4番に前回集録したデータがまだ残た場合、その古いイメージが
新しいイメージに上書きされないように、バッファ4番をロックします。
---------------------------------------------------------------------------------------------------

Ring集録の詳細は下記リンク(NI Developer Zone: Ring Aquisitions(英文))をご覧下さい。

関連リンク:
Developer Zone Tutorial: Ring Aquisitions(英文)

添付:


Get Buffer & Extract Buffer.zip


報告日時: 10/25/2003
最終更新日: 12/20/2007
ドキュメントID: 32OEL92L