• 沒有找到結果。

多缓冲区采集方式

在文檔中 目 录 (頁 9-12)

第 3 章 图像采集

3.3 多缓冲区采集方式

从前面的章节中,我们学会了如何采集图象。在高速图象采集应用中,我们会发现前面

长沙工控帮教育科技有限公司

为了解决采集缓冲区不足的问题,我们很自然的想到一个解决方案——增加图象采集缓 冲区。

NI-IMAQ 提供了两种多缓冲区的方式,一种是 Sequence,另一种是 Ring,如图 3.14 所示。

图 3.14 多缓冲区图象采集方式

Sequence 和 Ring 都是多缓冲区图象采集方式,它们的区别是,Sequence 是单次采集,

而 Ring 是连续采集,类似 Snap 和 Grab。

在 Ring 方式下,当一个 buffer 中的数据正在被处理时,新采集到的图象数据会更新到 另外的 Buffer 中去。

下面本文将依次介绍 Sequence 和 Ring 的实现方式。

3.3.1 Sequence 图象采集方式

Sequence 图象采集方式由 IMAQ Sequence.vi 实现,如图 3.15 所示。

图 3.15 IMAQ Sequence.vi

IMAQ Sequence.vi 最重要的参数是 Images In,如图 3.16 所示。Images In 是一个图象数 据缓冲区引用数组,里面包含了多个由 IMAQ Create.vi 创建的图象数据缓冲区的引用。只 有知道多个图象数据缓冲区在哪里,IMAQ Sequence.vi 才能完成多缓冲区模式的图象采集。

长沙工控帮教育科技有限公司

图 3.16 IMAQ Sequence.vi 参数

Sequence 图象采集方式的完整实现,大家可以参考范例程序中的 HL Sequence.vi,如图 3.17 所示。

第 1,4,5 步是大家熟悉的初始化图象采集卡,释放图象采集卡和释放图象缓冲区的程 序。

第 2 步是调用 IMAQ Create.vi 创建多个图象数据缓冲区,需要注意的是,多个图象数 据缓冲区的名字必须不一样。

第 3 步是调用 IMAQ Sequence.vi 采集多帧图象数据,当指定数量的图象采集完毕后,

IMAQ Sequence.vi 会返回并结束 Sequence 采集过程。

图 3.17 HL Sequence.vi 3.3.2 Ring 图象采集方式

Ring 图 象 采 集 方 式 需 要 由 三 个 VI 来 实 现 , 它 们 分 别 是 : ,

和 。

IMAQ Configure List.vi 完成缓冲区列表的配置,告诉驱动程序缓冲区的数量(Number of buffers),以连续还是单次的方式进行图象采集(Continuous?)以及缓冲区的位置(Memory

长沙工控帮教育科技有限公司

IMAQ Extract Buffer.vi 把采集到的图象从缓冲区中提取出来,为后续图象处理做准备。

与上节思路相同,我们打开范例程序中的 LL Ring.vi,学习 Ring 图象采集方式的实现 方法,如图 3.18 所示(由于文档宽度的关系,仅把关键部分代码进行截图分析,以下同)。

图 3.18 LL Ring.vi

第一步,调用 IMAQ Configure List.vi 告诉驱动程序是以 Continuous 的方式进行图象采 集,缓冲区的位置在 System——就是开发应用程序的主机上。

第二步,调用 IMAQ Configure Buffer.vi 把创建好的图象缓冲区关联到缓冲区列表的对 应位置上。

第三步,调用 IMAQ Start.vi 开启一个图象采集的过程,需要注意的是,在调用 IMAQ Start.vi 前,必须调用 IMAQ Configure List.vi 和 IMAQ Configure Buffer.vi 来配置采集过程。

第四步,调用 IMAQ Extract Buffer.vi 从缓冲区中把图象提取出来。

第五步,把 IMAQ Extract Buffer.vi 的 Buffer to Exact 参数设置为-1 表示释放当前被提取 的缓冲区。IMAQ Extract Buffer.vi 在提取图象数据时会对当前被提取的缓冲区进行保护,所 以当采集过程完成时,需要释放当前被保护的缓冲区。

在文檔中 目 录 (頁 9-12)

相關文件