示例#1
0
        private void addGlyph(Glyph g)
        {
            PositionRobot p = new PositionRobot();

            p.Angle       = (float)g.rotation;
            p.Position    = new PositionElement();
            p.Position.X  = g.Position[0];
            p.Position.Y  = g.Position[1];
            p.Identifiant = g.getIdentifiant();

            LstRbt.Add(p);
        }
示例#2
0
        /* Fonction Robot */
        private void mergePosition(List <PositionRobot> LstTmp)
        {
            if (LstTmp.Count == 0)
            {
                return;
            }
            List <PositionRobot> ListEnvoi = new List <PositionRobot>();

            for (int i = 0; i < LstTmp.Count; i++)
            {
                bool          Trouve = false;
                PositionRobot tmp    = LstTmp[i];
                tmp.Position.X = (int)(ratioCmParPixel[0] * tmp.Position.X);
                tmp.Position.Y = (int)(ratioCmParPixel[1] * tmp.Position.Y);
                for (int j = 0; j < LstRobot.Count; j++)
                {
                    if (LstRobot[j].Identifiant == LstTmp[i].Identifiant)
                    {
                        IntPoint itmp = new IntPoint((int)(tmp.Position.X), (int)(tmp.Position.Y));
                        IntPoint p    = new IntPoint(LstRobot[j].Position.X, LstRobot[j].Position.Y);
                        if (p.DistanceTo(itmp) > 5) //  Sueil a 2 cm
                        {
                            LstRobot[j] = tmp;
                            ListEnvoi.Add(tmp);
                        }
                        tmp.DerniereModification = DateTime.Now;
                        Trouve = true;
                        break;
                    }
                }
                if (Trouve == false)
                {
                    tmp.DerniereModification = DateTime.Now;
                    ListEnvoi.Add(tmp);
                    LstRobot.Add(tmp);
                }
            }
            if (ListEnvoi.Count > 0)
            {
                //Logger.GlobalLogger.debug("" + ListEnvoi.Count);
                envoieListe(ListEnvoi);
            }
            for (int i = LstRobot.Count - 1; i >= 0; i--)
            {
                if (LstRobot[i].Position.X == -1)
                {
                    LstRobot.RemoveAt(i);
                }
            }
        }
示例#3
0
        protected void clean()
        {
            List <PositionRobot> pos = new List <PositionRobot>();
            List <ObjColor>      obj = new List <ObjColor>();

            while (true)
            {
                pos.Clear();
                obj.Clear();
                int      i = 0;
                TimeSpan t;
                /* Nettoye les glyphs disparut de la bibliotheque de Glyphs */
                foreach (PositionRobot tmp in LstRobot)
                {
                    t = DateTime.Now - tmp.DerniereModification;
                    if (t.Seconds > 3)
                    {
                        PositionRobot ta = tmp;
                        ta.Position.X = -1;
                        ta.Position.Y = -1;
                        pos.Add(ta);
                        i++;
                    }
                    else
                    {
                        pos.Add(tmp);
                    }
                }
                if (i > 0)
                {
                    LstRobot = pos;
                    // Logger.GlobalLogger.debug("Suppression de " + i + " Glyphs");
                }
                Thread.Sleep(3000);
            }
        }