private List <Point> Get_Tag_Position_List(String IDRFID)
      {
          List <Point> result = new List <Point>();



          foreach (string Ip in table.SlabsTagBuffer.Keys)
          {
              Ip.ToCharArray().ToString();
              foreach (Tag tg in table.SlabsTagBuffer[Ip].SlabTagBuffer)
              {
                  if (tg.ID == IDRFID)
                  {
                      Point position = new Point();
                      if (Ip == "192.168.1.121")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.122")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.123")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.124")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }



                      else if (Ip == "192.168.1.131")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.132")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.133")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.134")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }

                      else if (Ip == "192.168.1.141")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.142")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.143")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.144")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }


                      else if (Ip == "192.168.1.151")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.152")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.153")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.154")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else
                      {
                          Console.WriteLine("IP convesion Problem" + position);
                      }


                      // Console.WriteLine(tg.ID+" has been detected by "+Ip+" position : x "+tg.Position.X+" y: "+tg.Position.Y );
                      result.Add(position);
                  }
              }
          }



          if (result.Count == 0)
          {
              return(null);
          }
          else
          {
              return(result);
          }
      }
      /// <summary>
      /// Private Function to get a position of tag from his ID Value.
      ///<param name="IDRFID">the string value Tag RFID Identificator.</param>
      ///<return> this function return type is tag Object Type.</return>
      ///</summary>
      public Tag Get_Tag_Position(String IDRFID)
      {
          List <Point> result = new List <Point>();



          foreach (string Ip in table.SlabsTagBuffer.Keys)
          {
              Ip.ToCharArray().ToString();
              foreach (Tag tg in table.SlabsTagBuffer[Ip].SlabTagBuffer)
              {
                  if (tg.ID == IDRFID)
                  {
                      Point position = new Point();
                      if (Ip == "192.168.1.121")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.122")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.123")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.124")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 12, tg.Position.Value.rssi);
                      }



                      else if (Ip == "192.168.1.131")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.132")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.133")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.134")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 8, tg.Position.Value.rssi);
                      }

                      else if (Ip == "192.168.1.141")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.142")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.143")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.144")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 4, tg.Position.Value.rssi);
                      }


                      else if (Ip == "192.168.1.151")
                      {
                          position = new Point(tg.Position.Value.X + 0, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.152")
                      {
                          position = new Point(tg.Position.Value.X + 4, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.153")
                      {
                          position = new Point(tg.Position.Value.X + 8, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else if (Ip == "192.168.1.154")
                      {
                          position = new Point(tg.Position.Value.X + 12, tg.Position.Value.Y + 0, tg.Position.Value.rssi);
                      }
                      else
                      {
                          position = new Point(0, 0);
                      }


                      // Console.WriteLine(tg.ID+" has been detected by "+Ip+" position : x "+tg.Position.X+" y: "+tg.Position.Y );
                      result.Add(position);
                  }
              }
          }



          if (result.Count == 0)
          {
              return(new Tag(IDRFID, null));;
          }
          else
          {
              return(new Tag(IDRFID, calcul_Medium_point(result.ToArray())));
          }
      }