public void start() { this.thread = new Thread(delegate() { String msg; while (!stop) { try { if (timeout) { msg = telnetClient.Read(); timeout = false; } // 1 telnetClient.Write("get /instrumentation/heading-indicator/indicated-heading-deg\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { IndicatedHeadingDeg = Double.Parse(msg); } // 2 telnetClient.Write("get /instrumentation/gps/indicated-vertical-speed\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { GpsIndicatedVerticalSpeed = Double.Parse(msg); } // 3 telnetClient.Write("get /instrumentation/gps/indicated-ground-speed-kt\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { GpsIndicatedGroundSpeedKt = Double.Parse(msg); } // 4 telnetClient.Write("get /instrumentation/airspeed-indicator/indicated-speed-kt\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { AirspeedIndicatorIndicatedSpeedKt = Double.Parse(msg); } // 5 telnetClient.Write("get /instrumentation/gps/indicated-altitude-ft\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { GpsIndicatedAltitudeFt = Double.Parse(msg); } // 6 telnetClient.Write("get /instrumentation/attitude-indicator/internal-roll-deg\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { AttitudeIndicatorInternalRollDeg = Double.Parse(msg); } // 7 telnetClient.Write("get /instrumentation/attitude-indicator/internal-pitch-deg\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { AttitudeIndicatorInternalPitchDeg = Double.Parse(msg); } // 8 telnetClient.Write("get /instrumentation/altimeter/indicated-altitude-ft\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { AltimeterIndicatedAltitudeFt = Double.Parse(msg); } // Longitude. telnetClient.Write("get /position/longitude-deg\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { Longitude = Double.Parse(msg); } // Latitude. telnetClient.Write("get /position/latitude-deg\n"); msg = telnetClient.Read(); if (!msg.Contains("ERR")) { Latitude = Double.Parse(msg); } // Set the variables in the queue. while (this.update.Count != 0) { string s = "set " + update.Dequeue() + "\n"; telnetClient.Write(s); telnetClient.Read(); } // The same for the other sensors properties. Thread.Sleep(250);// read the data in 4Hz } catch (IOException e) { if (e.ToString().Contains("A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.")) { // Problem with reading values. ReadError = true; timeout = true; } else { stop = true; Connecting = "disconnected"; ServerError = true; update.Clear(); } } catch (FormatException) { // Error with values. InValidError = true; } catch (Exception) { // Problem with connecting to the server. update.Clear(); stop = true; if (!telnetClient.IsConnect()) { Connecting = "disconnected"; } ServerError = true; } } }); thread.Start(); }