Esempio n. 1
0
        /// <summary>
        /// 根据条件得到测点集合  测点属性之间逗号分隔 id,点名,描述,单位,数值
        /// </summary>
        /// <param name="flag">是否实时值</param>
        /// <returns></returns>
        public List<string> GetPointList(string filterexp, bool flag, DateTime time)
        {
            try {
                if (String.IsNullOrEmpty(filterexp) || !filterexp.Contains(",")) {
                    return null;
                }

                String[] temp = filterexp.Split(',');
                if (null == temp || 0 >= temp.Length) {
                    return null;
                }
                TagQueryFilter filter = new TagQueryFilter();
                PropField propField = (from p in TagTypeSystem.BasePropFields
                                       where p.PropName == "Name"
                                       select p).First<PropField>();

                filter.Conditions.InsertAndCompileExpression(new TagQueryExpression(propField,
                    TagQueryExpression.CompareOperator.Equal, temp[0]));
                filter.StartNode = rootNode;
                filter.Fields = null;
                TagVector tagVector = GetPointListByTagName(temp[0]);
                if (null == tagVector) {
                    return null;
                }
                else {
                    List<String> result = new List<String>();
                    if (flag) {
                        RealDataSet realDataSet = new RealDataSet();
                        BatchResults results = DataIO.Snapshot(dbConnector, tagVector, realDataSet);
                        foreach (var item in realDataSet) {
                            String tagName = tagVector.First(x => x.TagId == item.TagId).TagName;
                            String tagStringValue = null != item.Value ? item.Value.ToString() : "0";
                            String tagDesc = tagVector.First(x => x.TagId == item.TagId).Properties["Desc"].ToString();
                            String tagEngunit = tagVector.First(x => x.TagId == item.TagId).Properties["ENGINEERINGUNIT"].ToString();

                            result.Add(String.Format("{0},{1},{2},{3},{4}", item.TagId, tagName, tagDesc, tagEngunit, tagStringValue));
                        }
                    }
                    else {
                        HisDataSet realDataSet = new HisDataSet();
                        BatchResults results = DataIO.ReadRaw(dbConnector, tagVector, time.AddSeconds(-1), time, realDataSet);
                        foreach (var item in realDataSet) {
                            String tagName = tagVector.First(x => x.TagId == item.TagId).TagName;
                            String tagStringValue = "0";
                            if (null != item.Data && 0 < item.Data.Count) {
                                tagStringValue = null != item.Data[0].Value ? item.Data[0].Value.ToString() : "0";
                            }
                            String tagDesc = tagVector.First(x => x.TagId == item.TagId).Properties["Desc"].ToString();
                            String tagEngunit = tagVector.First(x => x.TagId == item.TagId).Properties["ENGINEERINGUNIT"].ToString();

                            result.Add(String.Format("{0},{1},{2},{3},{4}", item.TagId, tagName, tagDesc, tagEngunit, tagStringValue));
                        }
                    }
                    return result;
                }
            }
            catch (Exception ex) {
                _ErrorInfo = ex.Message;
                return null;
            }
        }
Esempio n. 2
0
 //回写数据库
 /// <summary>
 /// 回写数据
 /// </summary>
 /// <param name="tagname">测点</param>
 /// <param name="value">数值</param>
 /// <returns></returns>
 public Boolean WriteSnapshotValue(string tagname, string value)
 {
     try {
         if (String.IsNullOrEmpty(tagname)) {
             return false;
         }
         TagVector tagVector = GetPointListByTagName(tagname);
         if (null != tagVector && 0 < tagVector.Count) {
             RealDataSet data = new RealDataSet();
             pSpaceCTLNET.TagValue tagVal = new pSpaceCTLNET.TagValue();
             tagVal.TagId = tagVector[0].TagId;
             tagVal.TimeStamp = DateTime.Now;
             tagVal.QualityStamp = QUALITY_MASK.GOOD;
             tagVal.Value = value;
             data.Add(tagVal);
             BatchResults results = DataIO.Insert(dbConnector, data, DataField.All);
             if (results.HasErrors) {
                 foreach (DbError dberror in results.Errors) {
                     _ErrorInfo += dberror.ErrorMessage;
                 }
                 return false;
             }
             return true;
         }
         return false;
     }
     catch (Exception ex) {
         _ErrorInfo = ex.Message;
         return false;
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 得到List表所有标签点的实时数据
        /// </summary>
        /// <param name="tagname"></param>
        /// <returns></returns>
        public Boolean GetSnapshotListData(ref Dictionary<String, TagValue> lttvs, 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));
                }
                RealDataSet realDataSet = new RealDataSet();
                BatchResults results = DataIO.Snapshot(dbConnector, tagVector, 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).TagLongName.ToUpper();
                    Double val = 0.0;
                    tagValue.TagSnapshot = (null != item.Value && Double.TryParse(item.Value.ToString(), out val)) ? val : 0;
                    tagValue.TagTime = item.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.Value ? item.Value.ToString() : "0";
                    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();

                    if (lttvs.ContainsKey(tagValue.TagName)) {
                        lttvs[tagValue.TagName] = tagValue;
                    }
                }
                results = null;
                tagVector = null;
                realDataSet = null;
                return true;
            }
            catch (Exception ex) {
                strError = ex.Message;
                return false;
            }
        }
Esempio n. 4
0
 /// <summary>
 /// 得到实时数据,返回double类型
 /// </summary>
 /// <param name="tagname"></param>
 /// <returns></returns>
 public Double GetSnapshotValue(String tagname)
 {
     String strError = "";
     double Result = double.MinValue;
     TagVector tagVector = GetPointListByTagName(tagname);
     RealDataSet realDataSet = new RealDataSet();
     BatchResults results = DataIO.Snapshot(dbConnector, tagVector, realDataSet);
     if (results.HasErrors) {
         foreach (DbError dberror in results.Errors) {
             strError += dberror.ErrorMessage;
         }
         if (!String.IsNullOrEmpty(strError)) throw new Exception(strError);
     }
     if (realDataSet.Count > 0) {
         Result = Convert.ToDouble(realDataSet[0].Value);
     }
     tagVector = null;
     realDataSet = null;
     results = null;
     return Result;
     /*try
     {
         if (String.IsNullOrEmpty(tagname))
         {
             return Double.MinValue;
         }
         TagVector tagVector = GetPointListByTagName(tagname);
         if (null != tagVector && 0 < tagVector.Count)
         {
             RealHisData data = DataIO.Snapshot(dbConnector, tagVector[0] as ITagElement);
             if (null != data && data.QualityStamp == QUALITY_MASK.GOOD)
             {
                 return ConvertToDouble(data.Value);
             }
         }
         return Double.MinValue;
     }
     catch (Exception ex)
     {
         _ErrorInfo = ex.Message;
         return Double.MinValue;
     }*/
 }
Esempio n. 5
0
        /// <summary>
        /// 通过条件查询得到符合手动录入的标签点。
        /// 注:只能用点名称  测点属性之间逗号分隔 点名,描述,单位
        /// </summary>
        /// <returns></returns>
        public List<TagValue> GetPointListForSDLR(string condition)
        {
            try {
                if (String.IsNullOrEmpty(condition) || !condition.Contains(',')) {
                    return null;
                }
                String[] temp = condition.Split(',');
                if (null == temp || 0 >= temp.Length) {
                    return null;
                }
                TagVector tagVector = GetPointListByTagName(temp[0]);
                if (null == tagVector) {
                    return null;
                }
                else {
                    RealDataSet realDataSet = new RealDataSet();
                    BatchResults results = DataIO.Snapshot(dbConnector, tagVector, realDataSet);
                    if (results.HasErrors) {
                        foreach (DbError dberror in results.Errors) {
                            _ErrorInfo += dberror.ErrorMessage;
                        }
                        return null;
                    }
                    List<TagValue> tagValList = new List<TagValue>();
                    foreach (var item in realDataSet) {
                        TagValue tagValue = new TagValue();
                        tagValue.TagID = item.TagId;
                        tagValue.TagName = tagVector.First(x => x.TagId == item.TagId).TagName;
                        Double val = Double.MinValue;
                        tagValue.TagSnapshot = (null != item.Value && Double.TryParse(item.Value.ToString(), out val)) ? val : Double.MinValue;
                        tagValue.TagTime = item.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss");
                        tagValue.TagQulity = (Int32)item.QualityStamp;
                        tagValue.TagStringValue = null != item.Value ? item.Value.ToString() : 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();

                        tagValList.Add(tagValue);
                    }
                    return null;
                }
            }
            catch (Exception ex) {
                _ErrorInfo = ex.Message;
                return null;
            }
        }