通知器操作函数用于挂起一个程序框图的执行,直至从程序框图的另一部分或同一应用程序中运行的另一个VI收到数据后才继续执行;通知器无法用于与其它计算机上的VI通信;与队列操作函数不同,通知器操作函数不缓冲已发送的消息,如消息被发送后没有任何节点在等待,则当另一消息被发送后数据将丢失。
工具/原料
LabVIEW
通知器
通知器函数
1、通知器操作函数位于:程序框图-函数选板-函数-编程-同步-通知器操作,通知器操作函数用于创建同一个VI不同线程之间或者不同VI间进行数据通信。
2、获取通知器引用:返回通知器引用,通过该引用,调用堤寇辔钒其他通知器操作函数。通过已命名的通知器在程序框图的两部分之间或两个VI之间传递数据。如未连线名白镢梧螂称,函数可新建未命名的通知器引用。如连线名称,函数可在现有通知器中搜索同名的通知器,然后返回至现有通知器的新的引用。如不存在同名的现有通知器,且如未找到是否创建?为TRUE,函数可创建新的命名的通知器引用。名称(接线端):是要获取或创建的通知器的名称。默认值为空字符串,用于创建无名称的通知器。元素数据类型(接线端):是需要通知器包含的数据的类型。该输入端可连线任意数据类型。如未找到是否创建?(接线端):指定名称指定的通知器不存在时,是否创建新的通知器。 如值为TRUE(默认值),指定名称的通知器不存在时,函数可创建新的通知器。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。通知器输出(接线端):是对已有通知器或函数创建的新通知器的引用。新建?(接线端):函数创建新的通知器时,值为TRUE。错误输出(接线端):包含错误信息,该输出将提供标准错误输出功能。
3、发送通知:向所有在通知器上等待的函数发送消息,所有等待通知和等待多个通知函数当前正等待通知器停止等待并开始继续执行。通知器(接线端):是对通知器的引用,通过获取通知器引用函数获取通知器引用。通知(接线端):是发送的消息,数据类型可匹配通知器的子类型。错误输入(接线端):表明节点运行前发生的错误,该输入将提供标准错误输入功能。通知器输出(接线端):返回无改变的通知器。错误输出(接线端):包含错误信息,该输出将提供标准错误输出功能。
4、取消通知:在通知器中删除当前消息,返回删除的消息。通知器(接线端):是对通知器的引用。通过获取通知器引用函数获取通知器引用。错误输入(接线端):表明节点运行前发生的错误,该输入将提供标准错误输入功能。通知器输出(接线端):返回无改变的通知器。已取消的通知(接线端):包含发送给通知器的最后通知,数据类型可匹配通知器的子类型。错误输出(接线端):包含错误信息,该输出将提供标准错误输出功能。
5、获取通知器状态:返回通知器的当前状态信息(例如,最近发送到通知器的未被删除的通知)。通知器(接线端):是对通知器的引用,通过获取通知器引用函数获取通知器引用。错误输入(接线端):表明节点运行前发生的错误,该输入将提供标准错误输入功能。通知器名(接线端):是通知器的名称。通知器输出(接线端):返回无改变的通知器。最近一次通知(接线端):是发送给通知器的最近一次未取消通知。如无通知,函数可在连线至获取通知器引用函数的元素数据类型中返回0。数据类型(接线端):可匹配通知器的子类型。等待数量(接线端):是当前等待通知器的函数数量,此类函数包括等待通知和等待多个通知。错误输出(接线端):包含错误信息,该输出将提供标准错误输出功能。
6、释放通知器引用:释放通知器引用。可使用获取通知器引用函墙绅褡孛数,多次获取对同一个通知器的同名引用。如需销赦觇殒阻毁通知器,可调用该函数,调用次数与获取引用的次数相等,或停止使用通知器引用的所有函数。如强制销毁?为TRUE,该函数可释放所有对通知器的引用,然后销毁通知器。通知器(接线端):是对通知器的引用,通过获取通知器引用函数获取通知器引用。强制销毁?(接线端):表明是否销毁通知器, 如值为FALSE(默认)并且要销毁通知器,可调用“释放通知器引用”函数,调用次数与获取引用的次数相等,或停止使用通知器引用的所有函数。如值为TRUE,函数可销毁通知器,用户无需多次调用“释放通知器引用”函数或停止所有使用该通知器引用的VI。错误输入(接线端):指示节点运行前产生错误的条件。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。通知器名是通知器的名称。最后通知(接线端):是发送给通知器的最后的未取消通知。如无通知,函数可在连线至获取通知器引用函数的元素数据类型中返回0。数据类型可匹配通知器的子类型。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
7、等待通知:通知器收到消息后,该函数可继续执行。使用发源捍悉刈送通知函数向服务器发送消息。如通知器引用无效(例剧安颌儿如,另一个函数关闭该通知器引用时),函数可停止等待并返回错误代码1122。如通知器不包含消息,该函数可等待直至通知器收到消息。通知器(接线端):是对通知器的引用。通过获取通知器引用函数获取通知器引用。忽略上一个(接线端):表明在调用函数前是否忽略LabVIEW发送给通知器的消息。 如值为TRUE并且通知器包含调用该函数前的消息,函数可等待直至通知器收到另一条消息。如值为FALSE(默认值)并且通知器包含调用该函数前的消息,函数可继续执行。超时毫秒(接线端):指定函数等待通知器接收消息的时间,以毫秒为单位。 默认值为-1,表示永不超时。如函数等待超时毫秒并且通知器没有接收到信息,则超时?的值为TRUE。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。通知器输出(接线端):返回无改变的通知器。通知(接线端):是通知器最后最后收到的消息。数据类型可匹配通知器的子类型。超时?(接线端):如通知器在超时前未收到消息或发生错误,则值为TRUE。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
8、等待多个通知:等待直到至少一个指定的通知器收到消息跷孳岔养。通知器收到消息后,该函数可继续执行。使用发送通知挣窝酵聒函数向服务器发送消息。如通知器引用变为无效(例如,另一个函数使通知器引用关闭时),该函数可停止等待并返回错误代码1122。如通知器不包含消息,该函数可等待直到通知器收到消息。通知器(接线端):是通知器引用数组。通过获取通知器引用函数获取通知器引用。忽略上一个(接线端):表明在调用函数前是否忽略LabVIEW发送给通知器的消息。 如值为TRUE并且通知器包含调用该函数前的消息,函数可等待直至通知器收到另一条消息。如值为FALSE(默认值)并且通知器包含调用该函数前的消息,函数可继续执行。超时毫秒(接线端):指定函数等待通知器接收消息的时间,以毫秒为单位。 默认值为-1,表示永不超时。如函数等待超时毫秒并且通知器没有接收到信息,则超时?的值为TRUE。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。通知器输出(接线端):返回的通知器引用数组包含收到的消息。 数组的索引对应于通知输出数组的索引。依据通知器输出数组,可确定来自特定通知器的消息,第一个值来自第一个通知器,第二个值来自于第二个通知器,依此类推。如发生错误,数组包含对发生错误的通知器的引用。通知(接线端):是由通知器收到的最后通知组成的数组。 除非子类型是数组,该数据类型可匹配通知器的子类型。如子类型是数组,数据类型是簇数组。超时?(接线端):如通知器在超时前未收到消息或发生错误,则值为TRUE。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
实例1
1、获取通知器引用函数用于生成用于循环1和循环2的通知器引用。循环1调用用于停止条件的发送通知函数和当前数据。循环2调用等待通知函数接收来自循环1的数据。如接收到停止条件,或释放通知器引用函数标识通知器引用失效时,循环2将停止。“释放通知器引用”函数在循环1执行结束后运行。
实例2
1、创建带有获取通知器引用函数的通知器,使用创建数组将其传输至通知循环内的等待多个通知函数。每个通知器循环生成不同的正弦波并使用发送通知函数发送消息至通知循环。每个循环内部的等待(ms)函数最初被设置为特定的延迟值,因此“通知循环”总具有足够的时间接收两个通知。按下面板上的停止按钮时,释放通知器引用函数运行,它使全部通知器引用无效,进而全部循环生成错误并停止执行。