系统那个网站免费,建设门户网站预算,免费外贸接单网站,怎么自学网站建设EMVA 1288标准之GemICam-GenApi学习与解读
背景介绍
当前相机不仅用于传输图像#xff0c;还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。
GenICam的目标是为所有类型的相机提供一个通用的编程接口#xff0c;无论相机使用何种接口技术#xff0c;或者实现…EMVA 1288标准之GemICam-GenApi学习与解读
背景介绍
当前相机不仅用于传输图像还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。
GenICam的目标是为所有类型的相机提供一个通用的编程接口无论相机使用何种接口技术或者实现了什么样的特性它们的编程接口都应该相同。
根据要解决的主要任务不同GenICam标准包含多个模块
GenApi用于对相机进行配置的应用程序编程接口API。GenTL支持抓取图像的传输层transport layer, TLAPI。SFNC标准特性的命名约定。CLProtocol用于将Camera Link相机转接到GenAPI的API。GenCP通用控制协议。
各个模块可以独立于其他模块进行发布。
GenApi模块简介
GenApi模块主要解决如何配置相机的问题。主要思想是相机供应商提供camera description files这些文件包含将相机特性自动化映射为相机寄存器的信息。
例如用户想要设置相机增益Gain42。使用GenICam的通用软件将自动读取相机的描述文件然后搞清楚将Gain设置为42意思是将0x2A这个值写入到地址为0x0815的寄存器上。其他可能涉及到的工作可能是提前检查相机是否具备增益属性以及检查新值是否在允许的增益范围。
为相机新增属性仅仅只需要扩展相机描述文件就可使新特性在GenICam应用下立即可用。
上图展示配置相机时涉及到的层。应用想要设置相机属性只需要编写类似下面这样的代码
Camera.Gain 42;GenApi模块会将这个调用转换为一系列transport layer API的调用这些API主要用于寄存器存取类似下面这样的代码
TransportLayer.WriteRegister( 0x0815, 0x2A, 2 ); // address, data, length最后transport layer将会把这些调用传递给相机接口。目前GenApi假定相机属性和寄存器地址一一对应不会多个属性共用同一个寄存器。
GenICam标准定义了相机描述文件的语法以及transport layer API的语义。并且为各个相机属性定义了推荐的名字和类型。GenICam标准不包含实际解析描述文件的代码也不包含transport layer代码。任何人都可以自定义其实现GenICam有一个可以免费使用的参考实现。
GenApi部分仅处理相机描述文件意图帮助用户理解GenApi的关键设计思想并帮助用户编写他们自己的相机描述文件。