private static void buildVehicle(XmlNode vehicleNode) { var vehicle = new Vehicle(); var stages = vehicleNode.ChildNodes; foreach (XmlNode stage in stages) { var name = stage.Attributes?.GetNamedItem("name").Value; double.TryParse(stage.Attributes?.GetNamedItem("massTotal").Value, out var massTotal); double.TryParse(stage.Attributes?.GetNamedItem("massFuel").Value, out var massFuel); double.TryParse(stage.Attributes?.GetNamedItem("massDry").Value, out var massDry); double.TryParse(stage.Attributes?.GetNamedItem("gLim").Value, out var gLim); double.TryParse(stage.Attributes?.GetNamedItem("minThrottle").Value, out var minThrottle); double.TryParse(stage.Attributes?.GetNamedItem("throttle").Value, out var throttle); bool.TryParse(stage.Attributes?.GetNamedItem("shutdownRequired").Value, out var shutdownRequired); var stg = new VehicleStage(name, massTotal, massFuel, massDry, gLim, minThrottle, throttle, shutdownRequired); var children = stage.ChildNodes; var engines = new List <XmlNode>(); foreach (XmlNode child in children) { if (child.LocalName != "engines") { continue; } foreach (XmlNode engine in child.ChildNodes) { engines.Add(engine); } } foreach (var engine in engines) { double.TryParse(engine.Attributes?.GetNamedItem("isp").Value, out var isp); double.TryParse(engine.Attributes?.GetNamedItem("thrust").Value, out var thrust); double.TryParse(engine.Attributes?.GetNamedItem("flow").Value, out var flow); var eng = new Engine(Globals.G0, stg.Throttle, isp, thrust, flow); stg.addEngine(eng); } vehicle.addVehicleStage(stg); } Globals.VehicleData = vehicle; }
void StartListening() { try { Debug.Log("Before Started at host:" + remoteIp + ", port " + remotePort); tcp_Listener = new TcpListener(IPAddress.Any, remotePort); //System.Net.IPAddress tcp_Listener.Start(); Debug.Log("Server Started at host:" + remoteIp + ", port " + remotePort); // Buffer for reading data Byte[] bytes = new Byte[256]; String jsonData = null; while (mRunning) { // check if new connections are pending, if not, be nice and sleep 100ms if (!tcp_Listener.Pending()) { Thread.Sleep(100); } else { TcpClient client = tcp_Listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); int i = 0; jsonData = null; byte[] msg = null; // Loop to receive all the data sent by the client. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { jsonData = System.Text.Encoding.ASCII.GetString(bytes, 0, i); var myDetails = JsonConvert.DeserializeObject <SetController> (jsonData); String returnMessage = ""; switch (myDetails.Cmd) { case 1: var VehicleStage_ = new VehicleStage { Cmd = 1, Speed = 0.0f, Angle = 0.0f, Lat = 0.0f, Lon = 0.0f, Heading = 0.0f }; returnMessage = JsonConvert.SerializeObject(VehicleStage_); msg = Encoding.UTF8.GetBytes(returnMessage); break; case 2: msg = camController.imageResult.originalIMG; break; case 3: msg = camController.imageResult.segmentIMG; break; default: break; } stream.Write(msg, 0, msg.Length); } client.Close(); Debug.Log("Client closed"); } } // while } catch (ThreadAbortException) { Debug.Log("Error"); } finally { mRunning = false; tcp_Listener.Stop(); } }