使用 Basler Framegrabber API 填充具有内容的 LUT

在本节中,您可以找到一个关于如何在运行时轻松向 LUT 中 Fill 内容的示例。该方法基于 FieldParameterAccess 结构体。有关 struct FieldParameterAccess 和 function Fg_setParameterWithType() 的文档,请参阅 Basler Framegrabber API 文档。

示例实现:

此 FieldParameterAccess 结构体允许以灵活的方式访问任何类型的数组参数。既支持范围访问,也支持单值访问。

示例:

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

使用 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. 将内容写入 Applet 运算符 LUT

    使用 Fg_setParameterWithType() 函数将内容写入 Applet Operator LUT。

    示例:

  4. 将 LUT 内容写入已编译硬件 Applet 中的对应 LUT 运算符

    对于如上截图所示包含两个 LUT 运算符的 VisualApplets 设计结构,您可以将 LUT 内容写入已编译硬件 Applet 中的对应 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);