public static void SwapVectorPos(TagVector <T> vector1, TagVector <T> vector2) { var tmpPos = vector1.Pos; vector1.Pos = vector2.Pos; vector2.Pos = tmpPos; }
public void SwapVectorPos() { var vector1Pos = new[] { 1, 0 }; var vector2Pos = new[] { 0, 1 }; var vector1 = new TagVector <string>(vector1Pos.ToArray(), "vector1"); var vector2 = new TagVector <string>(vector2Pos.ToArray(), "vector2"); VectorUtils <string> .SwapVectorPos(vector1, vector2); vector1.Pos.SequenceEqual(vector2.Pos); Assert.IsFalse(vector1.Pos.SequenceEqual(vector2.Pos)); Assert.IsTrue(vector1Pos.SequenceEqual(vector2.Pos)); Assert.IsTrue(vector2Pos.SequenceEqual(vector1.Pos)); }
/// <summary> /// 得到List表所有标签点的历史数据 /// </summary> /// <param name="tagname"></param> /// <returns></returns> public Boolean GetArchiveListData(ref Dictionary<string, TagValue> lttvs, DateTime stime, out string strError) { try { strError = String.Empty; if (null == lttvs || 0 >= lttvs.Count) { strError = "字典参数为空。"; return false; } TagVector tagVector = new TagVector(); foreach (String str in lttvs.Keys) { tagVector.AddRange(GetPointListByTagName(str)); } HisDataSet realDataSet = new HisDataSet(); DateTime[] HisTime = {stime}; BatchResults results = DataIO.ReadAtTime(dbConnector, tagVector, HisTime, realDataSet); if (results.HasErrors) { foreach (DbError dberror in results.Errors) { strError += dberror.ErrorMessage; } return false; } foreach (var item in realDataSet) { /*TagValue tagValue = new TagValue(); tagValue.TagID = item.TagId; tagValue.TagName = tagVector.First(x => x.TagId == item.TagId).TagName; if (null != item.Data && 0 < item.Data.Count) { Double val = Double.MinValue; tagValue.TagSnapshot = (null != item.Data[0].Value && Double.TryParse(item.Data[0].Value.ToString(), out val)) ? val : Double.MinValue; tagValue.TagTime = item.Data[0].TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"); tagValue.TagQulity = (Int32)item.Data[0].QualityStamp; tagValue.TagStringValue = null != item.Data[0].Value ? item.Data[0].Value.ToString() : Double.MinValue.ToString(); } else { tagValue.TagSnapshot = Double.MinValue; tagValue.TagTime = DateTime.MinValue.ToString("yyyy-MM-dd HH:mm:ss"); tagValue.TagQulity = 0; //bad tagValue.TagStringValue = Double.MinValue.ToString(); } tagValue.NewTime = String.Empty; tagValue.NewValue = double.MinValue; tagValue.TagDesc = tagVector.First(x => x.TagId == item.TagId).Properties["Desc"].ToString(); tagValue.TagEngunit = tagVector.First(x => x.TagId == item.TagId).Properties["ENGINEERINGUNIT"].ToString(); */ TagValue tagValue = new TagValue(); tagValue.TagID = item.TagId; tagValue.TagName = tagVector.First(x => x.TagId == item.TagId).TagLongName.ToUpper(); Double val = 0.0; tagValue.TagSnapshot = (null != item.Data[0].Value && Double.TryParse(item.Data[0].Value.ToString(), out val)) ? val : 0; tagValue.TagTime = item.Data[0].TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"); tagValue.TagQulity = 0; tagValue.TagStringValue = "0"; //if ((item.Value != null) && (item.Value.ToString() != "null")) tagValue.TagStringValue = item.Value + ""; tagValue.TagStringValue = null != item.Data[0].Value ? item.Data[0].Value.ToString() : "0"; tagValue.NewTime = String.Empty; tagValue.NewValue = double.MinValue; if (lttvs.ContainsKey(tagValue.TagName)) { lttvs[tagValue.TagName] = tagValue; } } return true; } catch (Exception ex) { strError = ex.Message; return false; } }
/// <summary> /// 根据点名称获取点列表 /// </summary> /// <param name="tagName"></param> /// <returns></returns> private TagVector GetPointListByTagName(String tagName) { try { TagQueryFilter filter = new TagQueryFilter(); PropField propField = (from p in TagTypeSystem.BasePropFields where p.PropName == "LongName" select p).First<PropField>(); //filter.Conditions.InsertAndCompileExpression(new TagQueryExpression(propField, // TagQueryExpression.CompareOperator.Equal, tagName)); List<PropField> list = new List<PropField>(); list.Add(propField); //filter.StartNode = rootNode; //filter.Fields = null; ITag tag = tagManager.GetTagByName(tagName, list); if (null == tag) { return null; } filter = null; propField = null; list = null; TagVector tagVector = new TagVector(); tagVector.Add(tag); return tagVector; } catch (Exception ex) { _ErrorInfo = ex.Message; return null; } }