private bool DeserializePoints() { try { Console.WriteLine("Reading with XmlReader"); // Create an instance of the XmlSerializer specifying type and namespace. XmlSerializer serializer = new XmlSerializer(typeof(RobotPoint)); // A FileStream is needed to read the XML document. FileStream fs = new FileStream("punti.xml", FileMode.Open); XmlReader reader = XmlReader.Create(fs); // Use the Deserialize method to restore the object's state. _points = (RobotPoint)serializer.Deserialize(reader); //Correzione punti in millimetri, solamente i primi tre parametri di ogni array foreach (var a in _points.Aree) { foreach (var p in a.Posizioni) { p.Punto.x = p.Punto.x / 1000; p.Punto.y = p.Punto.y / 1000; p.Punto.z = p.Punto.z / 1000; } } fs.Close(); return(true); } catch (Exception ex) { Console.WriteLine("Errore deserializzazione punti da foglio xml :" + ex.Message); return(false); } }
/// <summary> /// Costruttore di classe, /// </summary> /// <param name="s"></param> public Robot() { //Imposto la culture info per poter convertire i numeri float in stringa, delimitati dal punto //invece che dalla virgola Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US"); //Ip definito scaticamente dato che il pc non cambierà mai indirizzo _ipAddress = IPAddress.Parse("192.168.250.5"); // La porta 40000 è quella che utilizza il robot per stabile una connessione tcp, // Attenzione, Il progemma del robot, esegue il tentativo di connessione solamente al suo inizio _localEndPointMain = new IPEndPoint(_ipAddress, 40000); _socketMain = new Socket(_ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _points = new RobotPoint(); _points.Aree = new List <Area>(); #region Punti per test //_points.Aree.Add(new Area() //{ // Name = "Zona Carico", // Posizioni = new List<Posizione>() // { // new Posizione() // { // Name = "Prel_1_g_1_zn_1", // Punto = new Point(1.23f,2,3,4,5,6) // }, // new Posizione() // { // Name = "prel_1_g_2_zn_1", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "prel_2_g_1_zn_1", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "prel_2_g_2_zn_1", // Punto = new Point(1,2,3,4,5,6) // } // } //}); //_points.Aree.Add(new Area() //{ // Name = "Zona Test 1", // Posizioni = new List<Posizione>() // { // new Posizione() // { // Name = "dep_1_g_1_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_1_g_2_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_2_g_1_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_2_g_2_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_3_g_1_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_3_g_2_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_4_g_1_zn_2", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_4_g_2_zn_2", // Punto = new Point(1,2,3,4,5,6) // } // } //}); //_points.Aree.Add(new Area() //{ // Name = "Zona Test 2", // Posizioni = new List<Posizione>() // { // new Posizione() // { // Name = "dep_1_g_1_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_1_g_2_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_2_g_1_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_2_g_2_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_3_g_1_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_3_g_2_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_4_g_1_zn_3", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_4_g_2_zn_3", // Punto = new Point(1,2,3,4,5,6) // } // } //}); //_points.Aree.Add(new Area() //{ // Name = "Zona Scarico", // Posizioni = new List<Posizione>() // { // new Posizione() // { // Name = "dep_1_g_1_zn_4", // Punto = new Point(1,2,3,4,5,6) // }, // new Posizione() // { // Name = "dep_1_g_2_zn_4", // Punto = new Point(1,2,3,4,5,6) // }, // } //}); #endregion //XmlSerialize(); //Se non avviene la deseriallizzazione correttamente, l'applicazione viene interrota if (!DeserializePoints()) { return; } //esegue il binding e fa partire un thread per l'invio dei punti al Robot StartListeningTheRobot(); }