/// <summary> /// 按照时间间隔读取数据 /// </summary> /// <param name="startTime">开始时间</param> /// <param name="endTime">结束时间</param> /// <param name="interVal">时间间隔(秒)</param> /// <param name="inclubeBounds">是否包含边界</param> /// <returns></returns> public DataTable ReadByInterval(DateTime startTime, DateTime endTime, int interVal, bool inclubeBounds) { Opc.Hda.Time hdaStartTime = new Time(startTime); Opc.Hda.Time hdaEndTime = new Time(endTime); //DataSet dsResult = new DataSet(); DataTable dataTable = new DataTable("DATA"); DataColumn timestamp = new DataColumn("TimeStamp"); DataColumn TagName = new DataColumn("TagName"); DataColumn value = new DataColumn("Value"); DataColumn quality = new DataColumn("Quality"); dataTable.Columns.Add(timestamp); dataTable.Columns.Add(TagName); dataTable.Columns.Add(value); dataTable.Columns.Add(quality); Opc.ItemIdentifierCollection itemIdentifierCollection = null; Opc.ItemIdentifier[] items = null; int index = 0; if (_hdaServer.Items.Count != 0) { itemIdentifierCollection = _hdaServer.Items; items = new Opc.ItemIdentifier[itemIdentifierCollection.Count]; Console.WriteLine("{0} Tags will read", itemIdentifierCollection.Count); } Opc.Hda.Trend group = new Opc.Hda.Trend(_hdaServer); group.Name = String.Format("{0}-{1}", group.Server.Url.HostName, Guid.NewGuid().ToString()); group.EndTime = new Opc.Hda.Time(endTime); group.StartTime = new Opc.Hda.Time(startTime); //TimeSpan span = endTime.Subtract(startTime); //int calcinterval = interVal; group.ResampleInterval = interVal; //calcinterval group.AggregateID = Opc.Hda.AggregateID.NOAGGREGATE; //Opc.Hda.AggregateID.DURATIONGOOD; group.MaxValues = 0; //将item添加到trend foreach (Opc.ItemIdentifier itemIdentifier in itemIdentifierCollection) { group.Items.Clear(); //清空item items[index] = itemIdentifier; Opc.IdentifiedResult[] results = group.Server.ValidateItems(new Opc.ItemIdentifier[] { itemIdentifier }); group.AddItem(itemIdentifier); ItemValueCollection[] values = group.ReadProcessed(); foreach (ItemValueCollection itemValueCollection in values) { foreach (ItemValue itemValue in itemValueCollection) { DataRow dataRow = dataTable.NewRow(); dataRow["Timestamp"] = itemValue.Timestamp; dataRow["TagName"] = itemIdentifier.ItemName; dataRow["Value"] = itemValue.Value; dataRow["Quality"] = itemValue.Quality; dataTable.Rows.Add(dataRow); } } index++; } Console.WriteLine("return data:{0} rows", dataTable.Rows.Count); return(dataTable); }
public DataTable ReadRaw(DateTime startTime, DateTime endTime, int maxValues, bool inclubeBounds) { Opc.Hda.Time hdaStartTime = new Time(startTime); Opc.Hda.Time hdaEndTime = new Time(endTime); DataTable dataTable = new DataTable("Data"); DataColumn timestamp = new DataColumn("TimeStamp"); DataColumn value = new DataColumn("Value"); DataColumn quality = new DataColumn("Quality"); dataTable.Columns.Add(timestamp); dataTable.Columns.Add(value); dataTable.Columns.Add(quality); Opc.ItemIdentifierCollection itemIdentifierCollection = null; Opc.ItemIdentifier[] items = null; int index = 0; if (_hdaServer.Items.Count != 0) { itemIdentifierCollection = _hdaServer.Items; items = new Opc.ItemIdentifier[itemIdentifierCollection.Count]; } Opc.Hda.Trend group = new Opc.Hda.Trend(_hdaServer); foreach (Opc.ItemIdentifier itemIdentifier in itemIdentifierCollection) { items[index] = itemIdentifier; Opc.IdentifiedResult[] results = group.Server.ValidateItems(new Opc.ItemIdentifier[] { itemIdentifier }); group.AddItem(itemIdentifier); index++; } group.Name = String.Format("{0}-{1}", group.Server.Url.HostName, Guid.NewGuid().ToString()); group.EndTime = new Opc.Hda.Time(endTime); group.StartTime = new Opc.Hda.Time(startTime); TimeSpan span = endTime.Subtract(startTime); int calcinterval = ((int)span.TotalSeconds); group.ResampleInterval = (decimal)calcinterval; group.AggregateID = Opc.Hda.AggregateID.DURATIONGOOD; group.MaxValues = maxValues; ItemValueCollection[] values = group.ReadRaw(); foreach (ItemValueCollection itemValueCollection in values) { foreach (ItemValue itemValue in itemValueCollection) { DataRow dataRow = dataTable.NewRow(); dataRow["Timestamp"] = itemValue.Timestamp; dataRow["Value"] = itemValue.Value; dataRow["Quality"] = itemValue.Quality; dataTable.Rows.Add(dataRow); } } return(dataTable); }
public DataTable ReadRaw(DateTime startTime, DateTime endTime, int maxValues, bool inclubeBounds) { Opc.Hda.Time hdaStartTime = new Time(startTime); Opc.Hda.Time hdaEndTime = new Time(endTime); DataTable dataTable = new DataTable("Data"); DataColumn timestamp = new DataColumn("TimeStamp"); DataColumn value = new DataColumn("Value"); DataColumn quality = new DataColumn("Quality"); dataTable.Columns.Add(timestamp); dataTable.Columns.Add(value); dataTable.Columns.Add(quality); Opc.ItemIdentifierCollection itemIdentifierCollection = null; Opc.ItemIdentifier[] items = null; int index = 0; if (_hdaServer.Items.Count != 0) { itemIdentifierCollection = _hdaServer.Items; items = new Opc.ItemIdentifier[itemIdentifierCollection.Count]; } Opc.Hda.Trend group = new Opc.Hda.Trend(_hdaServer); foreach (Opc.ItemIdentifier itemIdentifier in itemIdentifierCollection) { items[index] = itemIdentifier; Opc.IdentifiedResult[] results = group.Server.ValidateItems(new Opc.ItemIdentifier[] { itemIdentifier }); group.AddItem(itemIdentifier); index++; } group.Name = String.Format("{0}-{1}", group.Server.Url.HostName, Guid.NewGuid().ToString()); group.EndTime = new Opc.Hda.Time(endTime); group.StartTime = new Opc.Hda.Time(startTime); TimeSpan span = endTime.Subtract(startTime); int calcinterval = ((int)span.TotalSeconds); group.ResampleInterval = (decimal)calcinterval; group.AggregateID = Opc.Hda.AggregateID.DURATIONGOOD; group.MaxValues = maxValues; ItemValueCollection[] values = group.ReadRaw(); foreach (ItemValueCollection itemValueCollection in values) { foreach (ItemValue itemValue in itemValueCollection) { DataRow dataRow = dataTable.NewRow(); dataRow["Timestamp"] = itemValue.Timestamp; dataRow["Value"] = itemValue.Value; dataRow["Quality"] = itemValue.Quality; dataTable.Rows.Add(dataRow); } } return dataTable; }