多语言展示
当前在线:696今日阅读:19今日分享:20

LabVIEW-用户事件与动态注册事件

用户事件与动态注册事件是LabVIEW新增的功能,用户事件主要用于不同线程之间的数据交换;本文将讲解如何通过用户自定义事件触发随机数,在不同进程之间传递数据;
工具/原料

LabVIEW

方法/步骤
1

用户事件和动态注册事件函数位于:程序框图-查看(菜单)-函数选板-函数-编程-对话框与用户界面-事件,包括:注册事件,创建用户事件,产生用户事件,取消注册事件,销毁用户事件,清空事件队列;

2

注册事件:动态注册事件。可注册的事件由连线至事件源输入端的引用类型确定。连线事件注册引用句柄输出输出端至事件结构或该函数其他实例。事件注册引用句柄(接线端):是对“注册事件”函数创建的已有事件注册的引用。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。事件源1..n(接线端):是对应用程序、VI、控件或用户事件的引用。必须是对本地对象的引用。不能连线引用至远程对象。 如连线引用句柄数组或簇至该输入端,LabVIEW可为事件注册所有的数组或簇元素。事件注册引用句柄输出(接线端):返回对新建或已有事件注册的引用。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

3

创建用户事件:返回用户事件的引用。LabVIEW通过连线的用户事件数据类型确定事件的事件名称和数据类型。连线用户事件输出输出端至注册事件函数可注册事件。连线用户事件输出输出端至产生用户事件函数,可发送事件和相关数据至为该事件注册的所有事件结构。用户事件数据类型(接线端):是由多个元素或单个元素组成的簇,数据类型和标签可定义用户事件的数据类型和名称。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。用户事件输出(接线端):返回严格类型用户事件引用句柄。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

4

产生用户事件:广播连线至用户事件输入端的用户事件,发送用户事件和相关的事件数据至注册为处理该事件的每个事件结构。优先级(接线端):指定用户事件的优先级。如指定high priority,生成用户事件函数将把用户事件和相关的事件数据排在队列中已生成的一般优先级事件之前。默认值为normal priority。用户事件(接线端):是由创建用户事件函数创建的用户事件引用句柄。事件数据(接线端):是在创建用户事件函数的用户事件数据类型输入端定义的数据。错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。用户事件输出(接线端):返回严格类型用户事件引用句柄。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

5

取消注册事件:取消注册与事件注册引用句柄关联的所有事件。使用该事件注册引用句柄的事件结构不再接收任何动态事件。NI建议在事件无需处理时取消注册事件。如未取消注册事件,VI运行时,即使无事件结构等待处理事件,LabVIEW也可继续生成和排列事件,产生内存消耗且在前面板事件锁定启用时导致VI挂起。事件注册引用句柄(接线端):是对“注册事件”函数创建的已有事件注册的引用。错误输入(接线端):指示节点运行前产生错误的条件。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

6

销毁用户事件:通过销毁用户事件引用句柄,释放用户事件引用。所有注册为该用户事件的事件结构不再接收该事件。用户事件(接线端):是由创建用户事件函数创建的用户事件引用句柄。错误输入(接线端):指示节点运行前产生错误的条件。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。

8

打开LabVIEW,新建VI,程序框图,放置一个事件结构,然后选择事件结构,右击-选择显示动态事件接线端;

9

然后在程序框图添加:while循环,数值常量,创建用户事件,注册事件,并按照下图连线;在前面板添加一个停止布尔按钮(机械动作:单击时转换);

10

1)右击事件结构-添加事件分支;2)选择事件源/动态/<数值>:用户事件和选择事件-用户事件;3)事件结构出现:<数值>:用户事件;

11

按照下图,继续添加:产生用户事件,销毁用户事件,取消注册事件,以及简易错误处理器等函数,并在循环2的“产生用户事件”的事件数据接线端连接随机数(0~1),在循环1-事件结构-用户事件分支-创建数值显示控件;

注意事项
1

用户事件数据类型不仅支持数值类型,也支持字符串,布尔,簇等类型

2

用户事件数据类型定义时候需要命名(不要设置为空)

推荐信息