//The method called to retrieve data. public void retrieveData() { //Telementary update declared. TelementryUpdate telementryUpdate = new TelementryUpdate(); //Data is starting to be recieved. startRetrievingData = true; //Loop until recieving data is true. while (startRetrievingData) { //create a character buffer. //find the number of bites being read. byte[] buffer = new byte[256]; int num_bytes = stream.Read(buffer, 0, 256); //Get the ASCII data into a string variable. string ToBeDeSerialized = Encoding.ASCII.GetString(buffer, 0, num_bytes); //create a new serializer. JavaScriptSerializer serialize = new JavaScriptSerializer(); //set the telementry update object's variables the the deserialized data. telementryUpdate = serialize.Deserialize <TelementryUpdate>(ToBeDeSerialized); //Invoked the recieving event is the null contitional operator allows it (?) Recieving?.Invoke(telementryUpdate); } }
private void getControlUpdates(TelementryUpdate telementryUpdate) { //Will need to be involked if it is required //This recalles the function if (this.InvokeRequired) { this.Invoke(new RecievedDataHandler(getControlUpdates), new object[] { telementryUpdate }); } else { //Updates the text boxes describing the current conditions of the plane //Math.round is used to round up the doubles to a whole number to make it easier //to enterperate. txtAltitude.Text = Math.Round(telementryUpdate.altitude).ToString() + " ft"; txtAirspeed.Text = Math.Round(telementryUpdate.speed).ToString() + " Knts"; txtVerticalSpeed.Text = Math.Round(telementryUpdate.verticalSpeed).ToString() + " Fpm"; txtThrottle.Text = telementryUpdate.throttle.ToString() + "%"; txtPitchAngle.Text = Math.Round(telementryUpdate.pitch).ToString() + "°"; txtElevatorPitch.Text = telementryUpdate.elevatorPitch.ToString() + "°"; //Updates the data grid's cellswith the same values DataGridViewRow row = (DataGridViewRow)dgvDataRecieved.Rows[0].Clone(); row.Cells[0].Value = telementryUpdate.speed.ToString(); row.Cells[1].Value = telementryUpdate.verticalSpeed.ToString(); row.Cells[2].Value = telementryUpdate.pitch.ToString(); row.Cells[3].Value = telementryUpdate.altitude.ToString(); row.Cells[4].Value = telementryUpdate.throttle.ToString(); row.Cells[5].Value = telementryUpdate.elevatorPitch.ToString(); row.Cells[6].Value = telementryUpdate.warningCode.ToString(); dgvDataRecieved.Rows.Insert(0, row); if (dgvDataRecieved.Rows.Count > 10) { dgvDataRecieved.Rows.RemoveAt(9); } //Performs warning checks //depending on what kidn of warning code it is //different text warnings are given if (telementryUpdate.warningCode == 1) { lblWarning.Text = "Warning: Too low terrain"; } else if (telementryUpdate.warningCode == 2) { lblWarning.Text = "Warning: Stall risk"; } else { lblWarning.Text = "No warning"; } } }