Beispiel #1
0
 /// <summary>
 /// 读取实时值,质量戳,时间
 /// </summary>
 /// <param name="tags"></param>
 /// <returns></returns>
 public Dictionary <string, Tuple <int, DateTime, object> > ReadRealValueAndQualityTime(List <string> tags)
 {
     try
     {
         Dictionary <string, Tuple <int, DateTime, object> > re = new Dictionary <string, Tuple <int, DateTime, object> >();
         var gtags = GetGroupTags(tags);
         foreach (var vv in gtags)
         {
             var vvv = new GetRealValueRequest()
             {
                 Group = vv.Key, Token = mLoginId
             };
             vvv.TagNames.AddRange(vv.Value);
             var res = mRealDataClient.GetRealValue(vvv);
             if (res.Result)
             {
                 foreach (var val in res.Values)
                 {
                     string sname = vv.Value[val.Id];
                     if (!string.IsNullOrEmpty(vv.Key))
                     {
                         sname = vv.Key + "." + sname;
                     }
                     re.Add(sname, new Tuple <int, DateTime, object>(val.Quality, DateTime.FromBinary(val.Time), ConvertToValue(val.Value, val.ValueType)));
                 }
             }
         }
         return(re);
     }
     catch
     {
     }
     return(null);
 }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="request"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public override Task <GetRealValueReply> GetRealValue(GetRealValueRequest request, ServerCallContext context)
 {
     if (SecurityManager.Manager.IsLogin(request.Token) && SecurityManager.Manager.CheckReaderPermission(request.Token, request.Group))
     {
         GetRealValueReply response = new GetRealValueReply()
         {
             Result = true
         };
         var service = ServiceLocator.Locator.Resolve <IRealTagConsumer>();
         var ids     = service.GetTagIdByName(request.TagNames.Select(e => string.IsNullOrEmpty(request.Group) ? e : request.Group + "." + e).ToList());
         for (int i = 0; i < request.TagNames.Count; i++)
         {
             if (ids.Count > i && ids[i].HasValue)
             {
                 byte     quality;
                 DateTime time;
                 byte     tagtype = 0;
                 var      val     = service.GetTagValue(ids[i].Value, out quality, out time, out tagtype);
                 if (val != null)
                 {
                     response.Values.Add(new ValueQualityTime()
                     {
                         Id = i, Quality = quality, Value = val.ToString(), ValueType = tagtype, Time = time.ToBinary()
                     });
                 }
             }
         }
         return(Task.FromResult(response));
     }
     else
     {
         return(Task.FromResult(new GetRealValueReply()
         {
             Result = false
         }));
     }
 }