网上查到好多C#和OPCAutomation的资料,里面关于DataChange事件都是+=生成的,但在vb.net里面不行,要想用这个事件还是参考了KepServer自带的VB.Net的例子。
首先在对象浏览器里找到关于DataChange的委托声明,不过是C#版的
public delegate void DIOPCGroupEvent_DataChangeEventHandler(int TransactionID, int NumItems, ref System.Array ClientHandles, ref System.Array ItemValues, ref System.Array Qualities, ref System.Array TimeStamps)
根据这些参数就可以写DataChange事件了
Private Sub abOPCGroup2_DataChange(ByVal TransactionID As Integer, ByVal NumItems As Integer, ByRef ClientHandles As System.Array, ByRef ItemValues As System.Array, ByRef Qualities As System.Array, ByRef TimeStamps As System.Array) Handles abOPCGroup.DataChange Console.WriteLine(ItemValues(1).ToString()) End Sub
蓝色的函数名称都不重要,红色和函数里面的参数都很重要,而且
abOPCGroup.IsActive=True
abOPCGroup.IsSubscribe=False
如果IsActive=False,数据变化不会触发DataChange,但是SyncRead还是可以读取数据的,如果IsSubscribed=False,则SyncRead也读取不到数据了。
