Basler Framegrabber API を使用した LUT へのコンテンツの Fill

このセクションでは、実行時にLUTにコンテンツを簡単にFillする方法の例を紹介します。このメソッドは、FieldParameterAccess構造体に基づいています。struct FieldParameterAccessおよびfunction Fg_setParameterWithType()のドキュメントは、Basler Framegrabber APIドキュメントにあります。

実装例:

このFieldParameterAccess構造体を使用すると、あらゆるタイプの配列パラメータに柔軟にアクセスできます。範囲アクセスと単一値アクセスの両方が可能です。

例:

                
# include <fgrab_struct.h>
					
struct FieldParameterAccess singleaccess;
					
struct FieldParameterAccess rangeaccess; 
 	
				

Basler Framegrabber APIを使用してLUTにコンテンツをFillするには:

  1. LUTコンテンツの値を定義します

    例:

    					 
    uint64_t primes[7] = { 1, 2, 3, 5, 7, 11, 13 }; 
     					
    uint32_t answer = 42; 
     				
    					
  2. 単一値アクセスまたは範囲アクセスを設定します:

    1. FieldParameterAccess:: vtype: 含まれるデータのタイプを設定します

    2. FieldParameterAccess:: index: 範囲内の最初のインデックスを設定します

    3. FieldParameterAccess:: count: 範囲の値のカウントを設定します

    4. 含まれるデータのタイプに応じた値の範囲:FieldParameterAccess:: p_double、p_int32_t、p_int64_t、p_uint32_t、またはpuint64_t

    例:

    				
    // set up single value access 
    
    singleaccess.vtype = FG_PARAM_TYPE_UINT32_T; 
    
    singleaccess.index = 17; 
    
    singleaccess.count = 1; 
    
    singleaccess.p_uint32_t = &answer; 
    
     
    
    // set up range access 
    
    rangeaccess.vtype = FG_PARAM_TYPE_UINT64_T// every data value is an uint64_t 
    
    rangeaccess.index = 0; 
    
    rangeaccess.count = 7; 
    
    rangeaccess.p_uint64_t = primes; 
     				 
    				
  3. コンテンツをアプレットオペレータLUTに書き込みます

    Fg_setParameterWithType()関数を使用して、コンテンツをアプレットのOperator LUTに書き込みます。

    例:

  4. コンパイル済みハードウェアアプレットの対応するLUTオペレータにLUTコンテンツを書き込む

    上記のスクリーンショットに示すように2つのLUTオペレータを持つVisualAppletsデザイン構造の場合、コンパイル済みハードウェアアプレット内の対応するLUTオペレータにLUTコンテンツを次のように書き込むことができます:

    				
    retCode += Fg_setParameterWithType(fg, Fg_getParameterIdByName(fg, "Device1_Process0_LUT0 _LUTcontent"), 
    &singleaccess, 0, FG_PARAM_TYPE_STRUCT_FIELDPARAMACCESS); 
    
    retCode += Fg_setParameterWithType(fg, Fg_getParameterIdByName(fg, "Device1_Process0_LUT1 _LUTcontent"), 
    &rangeaccess, 0, FG_PARAM_TYPE_STRUCT_FIELDPARAMACCESS);