Exemple #1
0
            //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);
                }
            }
Exemple #2
0
        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";
                }
            }
        }