Example #1
0
        public static void SwapVectorPos(TagVector <T> vector1, TagVector <T> vector2)
        {
            var tmpPos = vector1.Pos;

            vector1.Pos = vector2.Pos;
            vector2.Pos = tmpPos;
        }
Example #2
0
        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));
        }
Example #3
0
        /// <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;
            }
        }
Example #4
0
        /// <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;
            }
        }