文章目录
Silicon Software图像采集卡简介
介绍功能强大且灵活的microEnable Frame Grabber系列软件开发套件(SDK)。
在某些情况下,不同的参数将用于不同的图像采集卡设置(即彩色或灰度采集卡)。这些差异可以在相应相机制造商的软件手册中找到。
microEnable帧接收器系列是其基于FPGA技术的现代图像采集卡。
在Silicon Software图像采集卡上,基本上有3种可能性可以使用某些功能集(通过applet表示)。
- 可以加载和访问预定义的applet(称为Acquisition Applet or SmartApplets);
- 可以使用VisualApplets(称为VA Applet)创建和访问具有特定功能的自定义applet 。
一个主要区别是:
- 对于AcquisitionApplets / SmartApplets,处理.dll文件;
- 对于VA Applets,处理.hap文件;
初始化抓帧器
使用microEnable之前,必须先初始化抓帧器。初始化必须通过启动程序来处理。初始化与设备的连接时,将建立驱动程序并初始化所有必要的内部数据结构。
Fg_getParameter()或Fg_getParameterEx()会通知已设置的特殊值。
释放帧捕获器
完成采集或发生错误后,必须使用Fg_FreeGrabber()释放帧捕获器资源。
抓取帧并显示的步骤
-
搜索连接到电脑中的硬件板子数目,并选择一个将要被初始化的帧捕捉器编号。
-
通过帧捕捉器型号编号获取Applet。
必须在配置特殊参数之前创建并选择正确的applet。必须加载Applet以初始化帧抓取器。可以通过逻辑数字选择几种可能可用的图像采集卡之一。对于应用于采集的每个采集卡,必须加载一个applet。采集卡1的变量号必须为0,采集卡2的变量号必须为1,依此类推。
-
初始化帧抓取器
-
设置参数
-
创建显示窗口并设置窗口缓冲区
-
计算缓冲区大小并分配内存
-
开始抓取
-
循环抓取当前帧,并显示当前帧
-
释放资源:关闭显示窗口,停止抓帧,释放内存,释放帧捕捉器
sisoboards.h
板子类型的常数定义。
定义的板子类型
siso_board_type
enum siso_board_type {
PN_MICROENABLE = 0xa1, /**< microEnable I */
PN_MICROENABLEII = 0xa2, /**< microEnable II */
PN_MICROENABLE3I = 0xa3, /**< microEnable III */
PN_MICROENABLE3IXXL = 0xa31, /**< microEnable III-XXL */
PN_MICROENABLE4AD1CL = 0xa40, /**< microEnable IV AD1-CL */
PN_MICROENABLE4BASE =
PN_MICROENABLE4AD1CL, /**< \deprecated old name for PN_MICROENABLE4AD1CL, maintained only for source compatibility */
PN_MICROENABLE4BASEx4 = 0xa43, /**< \deprecated name for a prototype never used*/
PN_MICROENABLE4AD4CL = 0xa42, /**< microEnable IV AD4-CL */
PN_MICROENABLE4VD1CL = 0xa41, /**< microEnable IV VD1-CL */
PN_MICROENABLE4FULLx1 =
PN_MICROENABLE4VD1CL, /**< \deprecated old name for PN_MICROENABLE4VD1CL, maintained only for source compatibility */
PN_MICROENABLE4VD4CL = 0xa44, /**< microEnable IV VD4-CL */
PN_MICROENABLE4FULLx4 =
PN_MICROENABLE4VD4CL, /**< \deprecated old name for PN_MICROENABLE4VD4CL, maintained only for source compatibility */
PN_MICROENABLE4AS1CL = 0xa45, /**< microEnable IV AS1-CL */
PN_MICROENABLE4VQ4GE = 0xe44, /**< microEnable IV VQ4-GE */
PN_MICROENABLE4GIGEx4 =
PN_MICROENABLE4VQ4GE, /**< \deprecated old name for PN_MICROENABLE4VQ4GE, maintained only for source compatibility */
PN_MICROENABLE4AQ4GE = 0xe42, /**< microEnable IV AQ4-GE */
PN_MICROENABLE4_H264CLx1 = 0xb41, /**< kappa h264 Fujitsu MB86H51 */
PN_MICROENABLE4_H264pCLx1 = 0xb42, /**< kappa h264 Fujitsu MB86H46A */
PN_PX100 = 0xc41, /**< PixelPlant PX100 */
PN_PX200 = 0xc42, /**< PixelPlant PX200 */
PN_PX210 = 0xc43, /**< PixelPlant PX210-CL */
PN_PX300 = 0xc44, /**< PixelPlant PX300-CxP */
PN_MICROENABLE5A1CXP4 = 0xa51, /**< microEnable 5 A01-CXP */
PN_MICROENABLE5A1CLHSF2 = 0xa52, /**< microEnable 5 A1-CLHS-F2 */
PN_MICROENABLE5AQ8CXP6B = 0xa53, /**< microEnable 5 AQ8-CXP6B */
PN_MICROENABLE5AQ8CXP4 =
PN_MICROENABLE5AQ8CXP6B, /**< \deprecated old name for PN_MICROENABLE5AQ8CXP6B, maintained only for source compatibility */
PN_MICROENABLE5VQ8CXP6B = 0xa54, /**< microEnable 5 VQ8-CXP6B */
PN_MICROENABLE5VQ8CXP4 =
PN_MICROENABLE5VQ8CXP6B, /**<\deprecated old name for PN_MICROENABLE5VQ8CXP6B, maintained only for source compatibility */
PN_MICROENABLE5AD8CLHSF2 = 0xa55, /**< microEnable 5 AD8-CLHS-F2 */
PN_MICROENABLE5VQ8CXP6D = 0xa56, /**< microEnable 5 VQ8-CXP6D */
PN_MICROENABLE5AQ8CXP6D = 0xa57, /**< microEnable 5 AQ8-CXP6D */
PN_MICROENABLE5VD8CL = 0xa58, /**< microEnable 5 VD8-CL */
PN_MICROENABLE5VF8CL =
PN_MICROENABLE5VD8CL, /**< \deprecated old name for PN_MICROENABLE5VD8CL, maintained only for source compatibility */
PN_MICROENABLE5A2CLHSF2 = 0xa59, /**< microEnable 5 A2-CLHS-F2 */
PN_MICROENABLE5AD8CL = 0xa5a, /**< microEnable 5 AD8-CL */
PN_MICROENABLE5_LIGHTBRIDGE_VCL_PROTOTYPE = 0x750, /**< LightBridge VCL Prototype */
PN_MICROENABLE5_LIGHTBRIDGE_MARATHON_VCL = 0x751, /**< LightBridge/Marathon VCL */
PN_MICROENABLE5_LIGHTBRIDGE_VCL = 0x7510, /**< LightBridge VCL */
PN_MICROENABLE5_MARATHON_VCL = 0x7511, /**< mE5 marathon VCL */
PN_MICROENABLE5_MARATHON_AF2_DP = 0x752, /**< mE5 marathon AF2 (CLHS dual port) */
PN_MICROENABLE5_MARATHON_ACX_QP = 0x753, /**< mE5 marathon ACX QP (CXP quad port) */
PN_MICROENABLE5_LIGHTBRIDGE_MARATHON_ACL = 0x754, /**< LightBridge/Marathon ACL */
PN_MICROENABLE5_LIGHTBRIDGE_ACL = 0x7540, /**< LightBridge ACL */
PN_MICROENABLE5_MARATHON_ACL = 0x7541, /**< mE5 marathon ACL */
PN_MICROENABLE5_MARATHON_ACX_SP = 0x755, /**< mE5 marathon ACX SP (CXP single port) */
PN_MICROENABLE5_MARATHON_ACX_DP = 0x756, /**< mE5 marathon ACX DP (CXP dual port) */
PN_MICROENABLE5_MARATHON_VCX_QP = 0x757, /**< mE5 marathon VCX QP (CXP quad port) */
PN_MICROENABLE5_MARATHON_VF2_DP = 0x758, /**< mE5 marathon VF2 (CLHS dual port) */
PN_MICROENABLE5_LIGHTBRIDGE_MARATHON_VCLx = 0x759, /**< LightBridge/Marathon VCLx */
//PN_MICROENABLE5_LIGHTBRIDGE_VCLx = 0x7590, /**< LightBridge VCLx */
PN_MICROENABLE5_MARATHON_VCLx = 0x7591, /**< mE5 marathon VCLx (VCL with XC7K410T FPGA) */
PN_TDI = 0xb50, /**< Thunderbolt Device Interface/II */
PN_TDI_I = 0xb500, /**< Thunderbolt Device Interface */
PN_TDI_II = 0xb501, /**< Thunderbolt Device Interface II*/
PN_TGATE_USB = 0xb57, /**< T-Gate USB/II */
PN_TGATE_I_USB = 0xb570, /**< T-Gate USB/II */
PN_TGATE_II_USB = 0xb571, /**< T-Gate USB/II */
PN_TGATE = 0xb5e, /**< T-Gate/II */
PN_TGATE_I = 0xb5e0, /**< T-Gate/II */
PN_TGATE_II = 0xb5e1, /**< T-Gate/II */
PN_TGATE_35 = 0xb58, /**< T-Gate/II 35 USB */
PN_TGATE_I_35 = 0xb580, /**< T-Gate/II 35 USB */
PN_TGATE_II_35 = 0xb581, /**< T-Gate/II 35 USB */
PN_TGATE_35_USB = 0xb59, /**< T-Gate/II 35 USB */
PN_TGATE_I_35_USB = 0xb590, /**< T-Gate/II 35 USB */
PN_TGATE_II_35_USB = 0xb591, /**< T-Gate/II 35 USB */
PN_TTDI = 0xb5f, /**< Test Thunderbolt Device Interface */
PN_MICROENABLE5_ABACUS_4G_PROTOTYPE = 0xb51, /**< microEnable 5 Abacus 4G Prototype */
PN_MICROENABLE5_ABACUS_4G =
PN_MICROENABLE5_ABACUS_4G_PROTOTYPE, /**< \deprecated old name for PN_MICROENABLE5_ABACUS_4G_PROTOTYPE, maintained only for source compatibility */
PN_MICROENABLE5_ABACUS_4G_BASE = 0xb52, /**< microEnable 5 Abacus 4G Base */
PN_MICROENABLE5_ABACUS_4G_BASE_II = 0xb53, /**< microEnable 5 Abacus 4G Base II (7K70T FPGA) */
PN_MICROENABLE6_KCU105 = 0xA60, /**< microEnable 6 Evaluation Board */
#ifdef PLATFORM_PROTOTYPING
PN_ML605 = 0xff46, /**< Xilinx ML605 Evaluation board */
#endif
PN_UNKNOWN = 0xffff,
PN_GENERIC_EVA = 0x10000000,
PN_NONE = 0
};
板类型标识符。每个设备都由其中一个标识符标识。可以通过Fg_getBoardType函数或使用带FG_BOARD_INFORMATION参数的Fg_getParameterWithType函数来查询。
只有连接器的物理布局不同的板子变体(例如CL连接器和PoCL连接器)使用相同的类型值。
fgrab_prototyp.h
设备和Applet的信息
这些函数将返回给定设备或applet或其组合的静态信息。在相同的输入上再次调用这些函数通常会再次返回相同的信息。
Fg_getBoardType
int Fg_getBoardType(int BoardIndex);
-
说明
Fg_getBoardType()返回板的类型:如果是microEnable III / -XXL或microEnable IV-Full x1 / -Full x4。PixelPlant目前无法被检测到。 -
返回值
◼ BoardIndex
板子的索引。 -
返回值
fg_error:没有带有给定索引的板。
板子类型的定义可以看:sisoboards.h
举例:
uint32_t boardType = BINFO_BOARDTYPE; Fg_getParameterWithType(fg, FG_BOARD_INFORMATION, &boardType, 0, FG_PARAM_TYPE_UINT32_T);
Fg_getBoardNameByType
const char * Fg_getBoardNameByType(const int BoardType, const int UseShortName);
- 说明
Fg_getBoardNameByType()返回板类型的名称。 - 参数
◼ BoardType
板类型
◼ UseShortName
获取板的简名称 - 返回值
NULL:没有给定类型的板
Fg_getSerialNumber
unsigned int Fg_getSerialNumber(Fg_Struct *Fg);
- 说明
函数Fg_getSerialNumber()读取帧捕获器的序列号。 - 参数
◼ Fg
指向帧抓取器结构Fg_Struct的指针。 - 返回值
板子的序列号。
要得到与板子上相同的表示法,应该用十六进制写出来。
Fg_getSWVersion
const char *const Fg_getSWVersion();
- 说明
函数Fg_getSWVersion()返回正在运行的SDK的版本。
Fg_getAppletVersion
const char *Fg_getAppletVersion(Fg_Struct *Fg, int AppletId);
- 说明
获取当前运行的applet的版本。 - 参数
◼ Fg
指向帧抓取器结构Fg_Struct的指针。
◼ AppletId
由Fg_getappletId()返回的applet ID。 - 返回值
如果不是使用VisualApplets创建的设计,则返回设计的applet版本号。
Fg_getAppletId
int Fg_getAppletId(Fg_Struct *Fg, const char *ignored);
- 说明
获取当前运行的applet的ID。 - 参数
◼ Fg
指向帧抓取器结构Fg_Struct的指针。
◼ ignored
should be NULL。
只是为了与早期的软件接口兼容。它被忽略,应该是NULL。 - 返回值
returns the applet ID of the design if it is not a design created using VisualApplets.
对于ID的定义可以看:fgrab_define.h
查询连接到系统中与帧捕获器相关的信息
Fg_getSystemInformation
int Fg_getSystemInformation(
Fg_Struct *Fg,
const enum Fg_Info_Selector selector,
const enum FgProperty propertyId,
int param1,
void* buffer,
unsigned int* bufLen
);
-
说明
以空终止字符串的形式返回当前帧捕获系统的各种信息。
对于要查询的附加控制/寻址信息,可以使用param1,这取决于要查询的值。例如:在多板系统中查询某个板的信息时,必须对该板进行寻址。Param1可用于板子的寻址。
当将空指针作为缓冲区传递时,函数