服务已经连上但是DataChange没触发,安装的艾默生客户端opcwatchlt已经连上获取数据也没问题。下面是测试代码
public Form1()
{
InitializeComponent();
OPCServer server = new OPCServer();
String serIp = "OPC-SERVER";//服务器的IP地址
String serverName = "OPC.DeltaV.1";//OPC服务器名称
server.Connect(serverName, serIp);
OPCGroups groups = server.OPCGroups;
OPCGroup group = groups.Add("myGroup");
group.UpdateRate = 1000;
group.IsActive = true;
group.IsSubscribed = true;
server.OPCGroups.DefaultGroupDeadband = 0;
server.OPCGroups.DefaultGroupIsActive = true;
group.DataChange += Group_DataChange;
OPCItem myItem = group.OPCItems.AddItem("PI20105/AI1/PV.CV", 1);
}
private void Group_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
{
//此处注意i是从1开始,因为getvalue没有0.下面输出分别为数据的ClientHandles(就是上文AddItem方法的第二个参数。),Itemvalue就是值,Qualities为质量,timestamps为时间。
listBox1.Items.Add(ItemValues.GetValue(1));//取到改变的值
}