Ejemplo n.º 1
0
 private void OnTrameReceived(object sender, TrameEventArgs e)
 {
     if (this.TrameReceived != null)
     {
         this.TrameReceived(this, e);
     }
 }
        private static void OnTrameReceived(object sender, TrameEventArgs e)
        {
            if (!planRecu) return;

            string r = e.Datas;
            XmlDocument d = new XmlDocument();

            if (r.Contains("<model cmd="))
            {
                // Ajout d'un élément 
                if (r.Contains("\"add\""))
                {
                    string aRetirer1 = "<model cmd=\"add\">\r\n  ";
                    string aRetirer2 = "\r </model>";
                    r = r.Remove(0, aRetirer1.Length);
                    r = r.Remove(r.Length - aRetirer2.Length, aRetirer2.Length);
                    d.LoadXml(r);

                    if (d.DocumentElement.Name == "car")
                    {
                        CWagon wagon = new CWagon();
                        wagon.ID = d.DocumentElement.Attributes["id"].Value;
                        if (d.DocumentElement.Attributes["weight_empty"] != null)
                            wagon.poidsAvide = Convert.ToInt32(d.DocumentElement.Attributes["weight_empty"].Value);
                        if (d.DocumentElement.Attributes["weight_loaded"] != null)
                            wagon.poidsRempli = Convert.ToInt32(d.DocumentElement.Attributes["weight_loaded"].Value);
                        if (d.DocumentElement.Attributes["location"] != null)
                            wagon.location = d.DocumentElement.Attributes["location"].Value;
                        if (d.DocumentElement.Attributes["len"] != null)
                            wagon.longueur = Convert.ToInt32(d.DocumentElement.Attributes["len"].Value);
                        res.listeWagon.Add(wagon);
                    }
                    else if (d.DocumentElement.Name == "lc")
                    {
                        CLoco loco = new CLoco();
                        loco.ID = d.DocumentElement.Attributes["id"].Value;
                        if (d.DocumentElement.Attributes["blockid"] != null)
                            loco.blockid = d.DocumentElement.Attributes["blockid"].Value;
                        if (d.DocumentElement.Attributes["V"] != null)
                            loco.vitesse = Convert.ToInt32(d.DocumentElement.Attributes["V"].Value);
                        if (d.DocumentElement.Attributes["dir"] != null)
                            loco.direction = Convert.ToBoolean(d.DocumentElement.Attributes["dir"].Value);
                        if (d.DocumentElement.Attributes["V_mid"] != null)
                            loco.vitesseMoy = Convert.ToInt32(d.DocumentElement.Attributes["V_mid"].Value);
                        if (d.DocumentElement.Attributes["blockenterside"] != null)
                            loco.blockEnterSide = Convert.ToBoolean(d.DocumentElement.Attributes["blockenterside"].Value);
                        if (d.DocumentElement.Attributes["mass"] != null)
                            loco.masse = Convert.ToInt32(d.DocumentElement.Attributes["mass"].Value);
                        if (d.DocumentElement.Attributes["nrcars"] != null)
                            loco.nrcars = Convert.ToInt32(d.DocumentElement.Attributes["nrcars"].Value);
                        if (d.DocumentElement.Attributes["number"] != null)
                            loco.number = d.DocumentElement.Attributes["number"].Value;
                        if (d.DocumentElement.Attributes["len"] != null)
                            loco.longueur = Convert.ToInt32(d.DocumentElement.Attributes["len"].Value);
                        res.listeLoco.Add(loco);
                    }
                }
                // Suppression d'un élément
                else if (r.Contains("\"remove\""))
                {
                    string aRetirer1 = "<model cmd=\"remove\" controlcode=\"\" slavecode=\"\" server=\"infw03A5B7AC\">\r\n  ";
                    string aRetirer2 = "\r </model>";
                    r = r.Remove(0, aRetirer1.Length);
                    r = r.Remove(r.Length - aRetirer2.Length, aRetirer2.Length);
                    d.LoadXml(r);

                    if (d.DocumentElement.Name == "car")
                    {
                        foreach (CWagon wagon in res.listeWagon)
                        {
                            if (wagon.ID == d.DocumentElement.Attributes["id"].Value)
                            {
                                res.listeWagon.Remove(wagon);
                                break;
                            }
                        }
                    }
                    else if (d.DocumentElement.Name == "lc")
                    {
                        foreach (CLoco loco in res.listeLoco)
                        {
                            if (loco.ID == d.DocumentElement.Attributes["id"].Value)
                            {
                                res.listeLoco.Remove(loco);
                                break;
                            }
                        }
                    }
                }
            }
                        
        }