| 简短说明 | |
|---|---|
|
文件:
\Examples\Acquisition\DataForwarding\iF2D100\DFExample_Host.vad
|
![]() |
|
默认平台: iF2D100 |
|
|
简要说明 本文介绍了在 imaFlex 2 Dual 100 平台上实现的数据转发。 |
|
具有菊花链连接的采集卡的典型数据转发环境如下所示:
最左侧的设备充当后续连接客户端(从属设备)的主机(主设备)。主机设备接收到的数据(例如来自相机的数据)会被转发给客户端。根据用例的不同,客户端可以转发完整的原始流数据,也可以只转发其中一部分。此行为在各个设备之间持续,直到菊花链的末端。
Basler imaFlex 2 Dual 100 的数据转发功能不仅允许转发图像数据,还允许转发元数据(例如用于远程控制客户端设备)。以下小节描述了一个演示这两个方面的基本示例。
示例小应用程序(Applet)用于相应的数据转发 SDK 示例应用程序 DFMaster 和 DFSlave。因此,无需通过 microDisplay X 等工具手动加载小应用程序。SDK 示例应用程序会自动加载这些小应用程序,所有用户交互均完全通过主机(主设备)应用程序进行。
有关使用采集卡 SDK 脚本的信息,请参考位于
examples\Acquisition\DataForwarding\SDK VisualApplets 安装目录下的相应脚本文档。
图像数据传输直接且易于实现。每个示例小应用程序在其图像路径中都展示了这一点。
远程控制和监控需要更多的工作,因为您无法通过使用来自 VisualApplets 链路的数据(如传入的控制命令)来动态更改小应用程序参数。您可以通过使用 VisualApplets 事件系统来解决此局限性。远程控制元数据路径演示了这种方法。
尽管小应用程序设计将这两条路径分开显示,但对于单个设备对而言,两条路径共享同一光纤资源。图像数据通过编号为 0 到 3 的所有四个光纤通道传输,而远程控制数据/metadata 则使用同一光纤模块的 0 号通道。
换句话说,光纤模块的 2×4 个通道以双向方式连接两个设备,用于传输图像和元数据。相应的数据转发算子 DFTxImage、DFTxMeta、DFRxImage 和 DFRxMeta 在内部管理此功能。
下表总结了示例中实现的数据转发连接。
有关示例设计文件处理结构的详细文档,请参阅相应 *.vad 设计中的注释框。
使用 VisualApplets 事件系统进行远程控制的核心理念在于,Framegrabber SDK API 提供了用于访问算子和 applet 参数的例程。利用 VisualApplets 事件系统,可以将带有有效负载数据的事件从 applet 发送到主机 PC,从而使事件监控 SDK 应用程序能够根据有效负载做出响应。
基于此,远程控制信号流如下:
-
主机 applet 向客户端发送命令。
-
在客户端 applet 中,收到的每个控制命令都会触发一个事件(包含有效负载)。
-
该事件由图像采集卡操作系统驱动程序捕获。
-
事件监控 SDK 应用程序根据对事件有效负载的解析执行相应的 SDK 例程。
数据转发示例使用自定义通信协议。在此范围内,命令事务称为 消息。消息的结构如下所示:
| 位索引 | 描述 | 大小(位) |
|---|---|---|
| [55] | 读/写标志 | 1 |
| [54:48] | 客户端(从属)设备地址 | 7 |
| [47:32] | 软件可访问的寄存器地址 | 16 |
| [31:0] | 软件可访问的寄存器数据 | 32 |
表 18. 消息位布局
消息总长度为 56 位,这对应于 DFTxMeta 和 DFRxMeta 算子中一个数据字的大小。
消息触发用于启动消息。SDK 主机应用程序负责配置消息内容和触发器。
通常,在 VisualApplets 链路上传输的数据可以采用不同的方式进行处理。对于数据转发示例,以下两种处理方法是相关的:
-
系统直接使用命令数据位。例如,它将专用的位转换为
VALT_SIGNAL并将其路由至 GPO 组。 -
系统会触发一个 VisualApplets 事件,并可包含从远程命令中提取的有效负载数据。
第一种处理方法代表一个 hardware command。系统使用消息位作为信号源来触发特定的操作。第二种处理方法代表一个 software command,因为驱动程序软件会处理发送到主机 PC 的事件。数据转发示例实现了这两种命令类型,并将重点放在软件命令上。



上一页

