处理.NET或ActiveX事件时,必须注册事件(见步骤1至步骤5)并创建一个回调VI用于处理事件(见步骤6至步骤7)。

注: NI建议在事件无需处理时使用取消注册事件函数取消注册事件。如未取消注册事件,VI运行时,即使无事件结构等待处理事件,LabVIEW也可继续生成和排列事件,产生内存消耗且在前面板事件锁定启用时导致VI挂起。

按照下列步骤,在LabVIEW中注册和处理.NET和ActiveX事件。

  1. .NET容器ActiveX容器中创建一个新控件。也可用构造器节点创建.NET对象或使用“自动化引用句柄”在LabVIEW中调用ActiveX对象
    注: LabVIEW仅支持使用数据构造器节点注册和处理.NET Core事件。
  2. 在程序框图上放置事件回调注册函数。
  3. 将引用或对象连线至“事件回调注册”函数的事件输入端。
  4. 单击“事件回调注册”函数的事件输入端旁的向下箭头,从快捷菜单上选择一个事件。
  5. (可选)将要传输至回调VI的数据连线至用户参数输入端。可将任何类型的LabVIEW数据(包括簇)连线至该参数。
  6. 右键单击VI引用输入端,从快捷菜单中选择创建回调VI。LabVIEW将依据用户选择的事件和用户参数连接的数据创建VI。LabVIEW将回调VI连线至VI引用输入端。
注:只要所用VI的连线板与事件数据的连线板匹配,就可用现有VI作为回调VI。该回调VI必须为重入,且对该VI的引用也必须是严格定义的。
  1. 打开回调VI并编辑程序框图,对事件进行处理。回调VI包含以下元素:
    • 事件通用数据包含以下元素:
      • 事件源是用于指定事件源(例如,LabVIEW、.NET或ActiveX)的数值输入控件。值为1表明是ActiveX事件。值为2表明是.NET事件。
      • 事件类型指定发生哪一种事件。对于用户接口事件该值是枚举型,对于.NET、ActiveX和其他事件源则是32位无符号整型。对于.NET和ActiveX事件,事件类型代表已注册事件的方法代码或ID。
      • 时间标识是指定事件发生时间的标识,以毫秒为单位。
    • 控件引用对发生事件的.NET对象、ActiveX对象或自动化引用句柄的引用。
    • 事件数据是回调VI所处理事件的特定参数簇。当从“事件回调注册”函数选择一个事件时,LabVIEW将决定相应的事件数据。如果事件没有任何关联数据,LabVIEW将不会为回调VI创建控件。
    • 事件数据输出是针对回调VI处理的事件的可修改的参数簇。只有当事件有输出参数时该元素才可用。
    • (可选)用户参数是当.NET或ActiveX对象产生事件时,用户要传至回调VI的数据。
    注:LabVIEW不会自动将事件数据输入连接至事件数据输出。因为,如要传递事件数据的任何部分至回调VI,必须将事件数据手动连接至事件数据输出