多语言展示
当前在线:1975今日阅读:58今日分享:42

LabVIEW-队列

LabVIEW同步技术:同步控制技术可以实现在多个VI之间或者同一VI 不同线程之间同步任务和交换数据;在LabVIEW中提供了‘同步’函数选板,包括通知器、队列、信号量、集合点、事件、首次调用函数;本文主要关注同步控制技术-队列技术:
工具/原料
1

LabVIEW

2

队列

队列函数
1

队列操作函数位于:程序框图-函数选板-函数-编程-同步-队列操作,队列操作函数用于创建同一个VI不同线程之前或者不同VI间进行数据通信的队列,队列函数可缓冲数据;

2

“获取队列引用”函数:返回队列的引用。队列最大值(接线端):是队列要保持的元素的最大数量。 默认值为–1,表示队列的元素数量没有限制。名称(接线端):包含要获取或创建的队列的名称。 默认值为空字符串,用于创建无名称的通知器。元素数据类型(接线端):是需要队列包含的数据类型。 该输入端是变体可连线任意数据类型。如未找到是否创建?(接线端):指定名称指定的队列不存在时,是否创建新的队列; 如值为TRUE(默认值),指定名称的队列不存在时,函数可创建新的队列。队列输出(接线端):是对已有队列或函数创建的新队列的引用。新建?(接线端):函数创建新的队列时,值为TRUE。

3

“元素入队列”函数:队列后端添加元素。队列是队列引用(接线端): 通过获取队列引用函数获取队列引用。元素(接线端):是添加至队列末尾的元素, 数据类型可匹配队列的子类型。超时毫秒(接线端):指定队列满时,函数等待队列可用的时间,以毫秒为单位; 默认值为–1,永不超时。如函数的等待时间超过超时毫秒时队列仍然是满的,超时?输出的值为TRUE。队列输出(接线端):是对未改动队列的引用。超时?(接线端):如函数超时并且队列中无可用空间或出现错误,则值为TRUE。

4

“预览队列元素”函数:返回队列前端的元素且不删除该元素。队列是队列引用(接线端): 通过获取队列引用函数获取队列引用。超时毫秒(接线端):指定队列为空时,函数等待队列可用元素的时间,以毫秒为单位。 默认值为–1,永不超时;如函数的等待时间超过超时毫秒时队列仍为空,超时?的值为TRUE。队列输出(接线端):是对未改动队列的引用。元素(接线端):是队列前部的元素。 数据类型可匹配队列的子类型。超时?(接线端):如函数等待超时而队列中仍然没有出现可用元素或出现错误,参数值为TRUE。

5

“获取队列状态”函数:返回队列的当前状态信息(例如,当前队列中的元素个数),也可使用该函数检查队列是否为有效的队列引用句柄,如队列为无效的队列引用句柄,函数可返回错误代码1。队列(接线端):是队列引用。 通过获取队列引用函数获取队列引用。返回元素?(接线端):表明是否返回队列中的元素。 如值为FALSE(默认值),函数不返回队列中的元素。队列最大值(接线端):是队列能包含的元素数量的最大值。如队列最大值为-1,队列可包含任意数量的元素。队列名称(接线端):是队列的名称。队列输出(接线端):是对未改动队列的引用。待处理删除数量(接线端):是“元素出队列”或“预览队列元素”函数当前等待从队列中删除的元素。 更多信息,见元素出列和预览队列元素函数。待处理插入数量(接线端):是当前等待使元素插入队列的函数的数目, 元素入队列或队列最前端插入元素函数可用于使元素插入队列,如队列最大值为–1,待处理插入数量为0。队列中元素数量(接线端):返回当前队列中元素的数目。元素(接线端):返回但并不删除当前队列中的所有元素。 如返回元素?的值为FALSE,数组为空。数据类型可匹配队列的子类型。

6

“释放队列引用”函数:释放队列引用。队列(接线端):是队列引用, 通过获取队列引用函数获取队列引用。强制销毁?(接线端):表明是否需要销毁队列。 如值为FALSE(默认)并且需要销毁队列,可调用“释放队列引用”函数,调用次数与获取引用的次数相等,或停止使用队列引用的所有VI。如值为TRUE,可由该函数销毁队列,用户无需多次调用“释放队列引用”函数或停止所有使用该通知器引用的VI。销毁队列可使所有指向队列的引用无效。队列名称(接线端):是队列的名称。剩余元素(接线端):该数组由函数释放队列前队列中包含的元素组成。 数组中的第一个元素是队列前部的元素,最后一个元素是队列后部的元素,数据类型可匹配队列的子类型。

7

'有损耗元素入队列 '(函数):在队列中添加元素。如队列已满,函数可通过删除队列前端的元素使新元素入队。不同于元素入队列函数,该函数可立即执行元素入队操作。通过获取队列函数可设置队列的最大尺寸。队列(接线端):是队列引用。 通过获取队列引用函数获取队列引用。元素(接线端):是添加至队列末尾的元素。 数据类型可匹配队列的子类型。队列输出(接线端):是对已有队列的引用。溢出元素(接线端):是队列已满时LabVIEW从队列前端删除的元素。溢出?(接线端):如队列已满且LabVIEW通过删除元素获得该空闲位置,则值为TRUE。如队列存在空闲位置且元素已插入队列,则溢出?的值为FALSE。

8

'队列最前端插入元素' (函数):在队列前端添加元素。队列队列(接线端):是队列引用。 通过获取队列引用函数获取队列引用。元素队列(接线端):是要加入队列前部的元素。 数据类型可匹配队列的子类型。超时毫秒队列(接线端):指定队列满时,函数等待队列可用的时间,以毫秒为单位。 默认值为–1,永不超时。如函数的等待时间超过超时毫秒时队列仍然是满的,超时?输出的值为TRUE。队列输出队列(接线端):是对未改动队列的引用。超时?队列(接线端):如函数超时并且队列中无可用空间或出现错误,则值为TRUE。

9

'元素出队列' (函数):删除队列前端的一个元素并返回该元素。如队列为空,则函数在超时前等待超时毫秒。如等待期间队列中出现剩余元素,函数可清除该元素且超时?为FALSE。如队列无效(例如,释放队列引用),则函数停止等待并返回错误代码1122。队列(接线端):是队列引用。 通过获取队列引用函数获取队列引用。超时毫秒(接线端):指定队列为空时,函数等待队列可用元素的时间,以毫秒为单位。 默认值为–1,永不超时。如函数的等待时间超过超时毫秒时队列仍为空,超时?的值为TRUE。队列输出(接线端):是对未改动队列的引用。元素(接线端):是队列前部的元素。 数据类型可匹配队列的子类型。超时?(接线端):如函数等待超时而队列中仍然没有出现可用元素或出现错误,参数值为TRUE。

10

清空队列 (函数):删除队列中的所有元素并通过数组返回元素,该函数不释放队列引用。使用释放队列函数可释放引用。队列(接线端):是队列引用。 通过获取队列引用函数获取队列引用。队列输出(接线端):是对未改动队列的引用。剩余元素(接线端):该数组包含从队列中删除的元素。 数组中的第一个元素是队列前部的元素,最后一个元素是队列后部的元素。数据类型可匹配队列的子类型。

实例
1

概述:演示使用队列函数以不同的速率入队列和出队列数据,可能导致上溢或下溢。操作步骤:1. 运行VI。2. 注意,当入队列速度等于出队列速度时,队列中的元素值保持为常量。3. 设置“入队列速度”为快速。注意,一旦队列被填满,入队列循环必须等待才能继续将元素输入队列。4. 设置“入队列速度”为慢速,“出队列速度”为快速。注意,一旦队列被清空,出队列循环必须等待才能将元素移出队列。5. 单击停止中止VI。

2

获取队列引用函数设置队列的数据类型,并将队列最大值设置为50。入队列循环使用元素入队列函数将数据输入队列。出队列循环使用元素出队列函数将数据移出队列。1)当队列循环运行速度等于出队列循环,入队列和出队列持续进行。2)如入队列循环运行速度高于出队列循环,队列将被填满。由于队列固定大小为50,因此入队列循环必须等待队列空间,才能继续输入队列元素。3)同理,如出队列循环运行速度高于入队列循环,出队列循环必须等待直至队列中包含元素。队列状态循环通过获取队列状态函数显示队列中的当前元素。用户单击停止时,队列状态循环停止执行,并调用释放通知器引用函数。这将使通知器引用无效,并导致入队列循环和出队列输出错误并结束执行。

注意事项

队列的机制:先进先出

推荐信息