예제 #1
0
 public ReceivedInfo(byte[] buff)
     : base(buff)
 {
     if (base.buff.Length >= 1)
     {
         tagData = new RxdTagData();
         epclen  = buff[0];
         if (buff.Length > epclen)
         {
             tagData.EPC = new byte[epclen];
             Array.Copy(buff, 1, tagData.EPC, 0, epclen);
         }
         if (buff.Length > epclen + 2)
         {
             tagData.Antenna = (ant = buff[epclen + 1]);
             if (buff.Length == epclen + 4)
             {
                 tagData.Hub  = (hub = buff[epclen + 2]);
                 tagData.Port = (port = buff[epclen + 3]);
             }
             else if (buff.Length == epclen + 5)
             {
                 tagData.Hub  = (hub = buff[epclen + 2]);
                 tagData.Port = (port = buff[epclen + 3]);
                 tagData.RSSI = (rssi = buff[epclen + 4]);
             }
             else
             {
                 tagData.RSSI = (rssi = buff[epclen + 2]);
             }
         }
     }
 }
예제 #2
0
 private void tagInventoryRecv(string readerName, RxdTagData tagData)
 {
     if (tagData.Antenna == curAntNO)
     {
         string text = Util.ConvertbyteArrayToHexstring(tagData.EPC);
         if (!string.IsNullOrEmpty(text))
         {
             lock (lockObj)
             {
                 if (tagList.ContainsKey(text))
                 {
                     Dictionary <string, int> dictionary = tagList;
                     string key = text;
                     dictionary[key]++;
                 }
                 else
                 {
                     tagList.Add(text, 1);
                 }
                 if (!preReadPort.Contains(tagData.Port))
                 {
                     preReadPort.Add(tagData.Port);
                 }
             }
         }
     }
 }
예제 #3
0
 public TagReadRecord(RxdTagData newData)
 {
     lock (new Object())
     {
         RawRead = newData;
     }
 }
예제 #4
0
 public ReceivedInfo(byte[] buff)
     : base(buff)
 {
     tagData = new RxdTagData();
     if (buff.Length > 1)
     {
         tagData.EPC = new byte[buff.Length - 1];
         Array.Copy(buff, 1, tagData.EPC, 0, tagData.EPC.Length);
     }
 }
예제 #5
0
        public void Update(RxdTagData mergeData)
        {
            DateTime now      = DateTime.Now.ToLocalTime();
            TimeSpan timediff = now - this.TimeStamp.ToUniversalTime();

            if (0 <= timediff.TotalMilliseconds)
            {
                RawRead         = mergeData;
                this.TimeStamp  = now;
                this.readCount += 1;
            }

            OnPropertyChanged(null);
        }
예제 #6
0
 public void Log(string msg, RxdTagData tagData)
 {
     Console.WriteLine(msg);
     Log(string.Format("EPC:{0}" +
                       "\r\nTID:{1}" +
                       "\r\nUser:{2}" +
                       "\r\nReserved:{3}" +
                       "\r\nAnetnna:{4}" +
                       "\r\nRSSI:{5}",
                       ByteFormat.ToHex(tagData.EPC, "", " "),
                       ByteFormat.ToHex(tagData.TID, "", " "),
                       ByteFormat.ToHex(tagData.User, "", " "),
                       ByteFormat.ToHex(tagData.Reserved, "", " "),
                       tagData.Antenna,
                       tagData.RSSI));
 }
예제 #7
0
        public void Add(RxdTagData addData)
        {
            lock (new Object())
            {
                string key = null;
                if (IsUniqueByteTID == false)
                {
                    key = ByteFormat.ToHex(addData.EPC, "", " "); //if only keying on EPCID
                }
                else
                {
                    key = string.Format("epc={0}, tid={1}", ByteFormat.ToHex(addData.EPC, "", " "), ByteFormat.ToHex(addData.TID, "", " "));
                }

                UniqueTagCounts = 0;
                TotalTagCounts  = 0;

                if (!EpcIndex.ContainsKey(key))
                {
                    logUtils.Log(string.Format("Add {0}", key));
                    TagReadRecord value = new TagReadRecord(addData);
                    value.SerialNumber = (uint)EpcIndex.Count + 1;
                    value.TimeStamp    = DateTime.Now.ToLocalTime();
                    value.ReadCount    = 1;

                    _tagList.Add(value);
                    EpcIndex.Add(key, value);
                    UpdateTagCount(EpcIndex);
                }
                else
                {
                    EpcIndex[key].Update(addData);
                    UpdateTagCount(EpcIndex);
                }
            }
        }
예제 #8
0
            public ReceivedInfo(byte[] buff)
                : base(buff)
            {
                tagData = new RxdTagData();
                int num = 0;

                if (buff.Length >= 1)
                {
                    epcLen = buff[num];
                    num++;
                }
                if (buff.Length >= 1 + epcLen)
                {
                    tagData.EPC = new byte[epcLen];
                    Array.Copy(buff, num, tagData.EPC, 0, epcLen);
                    num += epcLen;
                }
                if (buff.Length >= 1 + num)
                {
                    tidLen = buff[num];
                    num++;
                }
                if (buff.Length >= num + tidLen)
                {
                    tagData.TID = new byte[tidLen];
                    Array.Copy(buff, num, tagData.TID, 0, tidLen);
                    num += tidLen;
                }
                if (buff.Length >= 1 + num)
                {
                    userLen = buff[num];
                    num++;
                }
                if (buff.Length >= num + userLen)
                {
                    tagData.User = new byte[userLen];
                    Array.Copy(buff, num, tagData.User, 0, userLen);
                    num += userLen;
                }
                if (buff.Length >= 1 + num)
                {
                    resvLen = buff[num];
                    num++;
                }
                if (buff.Length >= num + resvLen)
                {
                    tagData.Reserved = new byte[resvLen];
                    Array.Copy(buff, num, tagData.Reserved, 0, resvLen);
                    num += resvLen;
                }
                if (buff.Length >= num + 2)
                {
                    tagData.Antenna = (ant = buff[num]);
                    if (buff.Length == num + 3)
                    {
                        tagData.Hub  = (hub = buff[num + 1]);
                        tagData.Port = (port = buff[num + 2]);
                    }
                    else if (buff.Length == num + 4)
                    {
                        tagData.Hub  = (hub = buff[num + 1]);
                        tagData.Port = (port = buff[num + 2]);
                        tagData.RSSI = (rssi = buff[num + 3]);
                    }
                    else
                    {
                        tagData.RSSI = (rssi = buff[num + 1]);
                    }
                }
            }