|
我的LabVIEW应用需要同时处理LabVIEW和ActiveX事件。为了避免混淆事件处理的范例,我想通过事件回调VI机制,而不是事件结构来处理LabVIEW用户界面事件。可以吗?
当然可以,尽管NI建议使用事件结构来处理LabVIEW用户界面事件。当前面板控件产生一个注册事件时,你可以将一个VI作为回调函数来处理它。该回调函数在事件发生时运行。通过Register Event Callback Node注册一个VI,使之在事件发生时被调用。而Register Event Callback Node在函数选板上的位置如下:Functions»All Functions»Communication »ActiveX
根据回调机制,完成如下的步骤来注册并处理LabVIEW用户界面事件
1、打开一个新VI,在程序框图上放置Register Event Callback node;
2、为作为事件源的前面板控件创建一个引用;
3、连接该引用至Register Event Callback node 的Event输入端;
4、点击事件输入端旁的下拉箭头,并从快捷菜单中选择一个事件;
5、(可选)将需要传递给回调VI的数据连接至User Parameter输入端;
6、 右击VI Ref输入端,从快捷菜单中选择Create Callback VI。LabVIEW会根据你选择的事件以及连接到User Parameter的数据创建一个VI;
7、打开回调VI并编辑程序框图来处理事件。
默认情况下,LabVIEW生成的回调VI是可重入的,否则当事件多次发生时LabVIEW就不能同时调用它。你也可以将一个现存的VI作为回调VI,只要该VI的连线板与事件数据的类型匹配。
请参照附件中的VI实例
(LabVIEW 7.1.1)。该实例处理布尔控件的“值改变”事件。使用的回调VI发送一个随机数到滑动杆输出控件并显示一个对话框。
以下VI是使用注册事件回调函数的范例:
|