예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="tag"></param>
 /// <returns></returns>
 private DBDevelopService.HisTagMessage ConvertToHisTagMessage(Cdy.Tag.HisTag tag)
 {
     DBDevelopService.HisTagMessage re = new DBDevelopService.HisTagMessage();
     if (tag != null)
     {
         re.Id           = (uint)tag.Id;
         re.TagType      = (uint)tag.TagType;
         re.Type         = (uint)tag.Type;
         re.CompressType = (uint)tag.CompressType;
         re.Circle       = (ulong)tag.Circle;
         if (tag.Parameters != null)
         {
             foreach (var vv in tag.Parameters)
             {
                 re.Parameter.Add(new DBDevelopService.hisTagParameterItem()
                 {
                     Name = vv.Key, Value = vv.Value
                 });
             }
         }
     }
     else
     {
         re.Id = uint.MaxValue;
     }
     return(re);
 }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="database"></param>
        /// <param name="group"></param>
        /// <returns></returns>
        public Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> > QueryTagByGroup(string database, string group)
        {
            Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> > re = new Dictionary <int, Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag> >();

            if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId))
            {
                int idx   = 0;
                int count = 0;
                do
                {
                    var result = mCurrentClient.GetTagByGroup(new DBDevelopService.GetTagByGroupRequest()
                    {
                        Database = database, LoginId = mLoginId, Group = group, Index = idx
                    });

                    idx   = result.Index;
                    count = result.Count;

                    if (!result.Result)
                    {
                        break;
                    }

                    Dictionary <int, Cdy.Tag.Tagbase> mRealTag = new Dictionary <int, Cdy.Tag.Tagbase>();
                    foreach (var vv in result.RealTag)
                    {
                        var tag = GetTag((int)vv.TagType);
                        tag.Id          = (int)vv.Id;
                        tag.LinkAddress = vv.LinkAddress;
                        tag.Name        = vv.Name;
                        tag.Desc        = vv.Desc;
                        tag.Group       = vv.Group;
                        mRealTag.Add(tag.Id, tag);
                    }

                    Dictionary <int, Cdy.Tag.HisTag> mHisTag = new Dictionary <int, Cdy.Tag.HisTag>();
                    foreach (var vv in result.HisTag)
                    {
                        var tag = new Cdy.Tag.HisTag {
                            Id = (int)vv.Id, TagType = (Cdy.Tag.TagType)vv.TagType, Type = (Cdy.Tag.RecordType)vv.Type, CompressType = (int)vv.CompressType
                        };
                        if (vv.Parameter.Count > 0)
                        {
                            tag.Parameters = new Dictionary <string, double>();
                            foreach (var vvv in vv.Parameter)
                            {
                                tag.Parameters.Add(vvv.Name, vvv.Value);
                            }
                        }
                        mHisTag.Add(tag.Id, tag);
                    }

                    foreach (var vv in mRealTag)
                    {
                        if (mHisTag.ContainsKey(vv.Key))
                        {
                            re.Add(vv.Key, new Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag>(mRealTag[vv.Key], mHisTag[vv.Key]));
                        }
                        else
                        {
                            re.Add(vv.Key, new Tuple <Cdy.Tag.Tagbase, Cdy.Tag.HisTag>(mRealTag[vv.Key], null));
                        }
                    }

                    idx++;
                }while (idx < count);
            }
            return(re);
        }