Changeset - b6ca403cf7f8
[Not reviewed]
tip default
0 1 0
mkanning@CL-ENS241-10.cedarville.edu - 13 years ago 2013-04-18 22:17:46
mkanning@CL-ENS241-10.cedarville.edu
recalculates humidity corectly
1 file changed with 9 insertions and 24 deletions:
0 comments (0 inline, 0 general)
Demo.WindowsForms/Forms/MainForm.cs
Show inline comments
 
@@ -807,193 +807,193 @@ namespace Demo.WindowsForms
 
 
        // key-up events - MDKfunctional
 
        private void MainForm_KeyUp(object sender, KeyEventArgs e)
 
        {
 
            int offset = -22;
 
 
            if (e.KeyCode == Keys.Left)
 
            {
 
                MainMap.Offset(-offset, 0);
 
            }
 
            else if (e.KeyCode == Keys.Right)
 
            {
 
                MainMap.Offset(offset, 0);
 
            }
 
            else if (e.KeyCode == Keys.Up)
 
            {
 
                MainMap.Offset(0, -offset);
 
            }
 
            else if (e.KeyCode == Keys.Down)
 
            {
 
                MainMap.Offset(0, offset);
 
            }
 
            else if (e.KeyCode == Keys.Delete)
 
            {
 
 
                if (currentRoute != null)
 
                {
 
                    routes.Routes.Remove(currentRoute);
 
                    currentRoute = null;
 
                }
 
 
                if (CurentRectMarker != null)
 
                {
 
                    objects.Markers.Remove(CurentRectMarker);
 
 
                    if (CurentRectMarker.InnerMarker != null)
 
                    {
 
                        objects.Markers.Remove(CurentRectMarker.InnerMarker);
 
                    }
 
                    CurentRectMarker = null;
 
 
                    //RegeneratePolygon();
 
                }
 
            }
 
            else if (e.KeyCode == Keys.Escape)
 
            {
 
                MainMap.Bearing = 0;
 
 
                //if (currentTransport != null && !MainMap.IsMouseOverMarker)
 
                //{
 
                //    currentTransport.ToolTipMode = MarkerTooltipMode.OnMouseOver;
 
                //    currentTransport = null;
 
                //}
 
            }
 
        }
 
 
        // key-press events - MDKfunctional
 
        private void MainForm_KeyPress(object sender, KeyPressEventArgs e)
 
        {
 
            if (MainMap.Focused)
 
            {
 
                if (e.KeyChar == '+')
 
                {
 
                    MainMap.Zoom = ((int)MainMap.Zoom) + 1;
 
                }
 
                else if (e.KeyChar == '-')
 
                {
 
                    MainMap.Zoom = ((int)(MainMap.Zoom + 0.99)) - 1;
 
                }
 
                else if (e.KeyChar == 'a')
 
                {
 
                    MainMap.Bearing--;
 
                }
 
                else if (e.KeyChar == 'z')
 
                {
 
                    MainMap.Bearing++;
 
                }
 
            }
 
        }
 
 
        //changes zoom - MDKfunctional
 
        private void buttonZoomUp_Click(object sender, EventArgs e)
 
        {
 
            MainMap.Zoom = ((int)MainMap.Zoom) + 1;
 
        }
 
 
        //changes zoom - MDKfunctional
 
        private void buttonZoomDown_Click(object sender, EventArgs e)
 
        {
 
            MainMap.Zoom = ((int)(MainMap.Zoom + 0.99)) - 1;
 
        }
 
 
 
 
        #endregion
 
 
        #region -- caching --
 
        #region caching
 
 
        // import map data - MDKfunctional
 
        private void btnCacheImport_Click(object sender, EventArgs e)
 
        {
 
            MainMap.ShowImportDialog();
 
        }
 
 
        // export map data - MDKfunctional
 
        private void btnCacheExport_Click(object sender, EventArgs e)
 
        {
 
            MainMap.ShowExportDialog();
 
        }
 
 
        // prefetch - MDKfunctional
 
        private void btnCachePrefetch_Click(object sender, EventArgs e)
 
        {
 
            RectLatLng area = MainMap.SelectedArea;
 
            if (!area.IsEmpty)
 
            {
 
                int zoom = (int)MainMap.Zoom;
 
                DialogResult res = MessageBox.Show("Ready ripp at Zoom = " + zoom + " and greater?", "GMap.NET Cache", MessageBoxButtons.YesNoCancel);
 
                if (res == DialogResult.Yes)
 
                {
 
                    for (int i = zoom; i <= 17; i++)
 
                    {
 
                        using (TilePrefetcher obj = new TilePrefetcher())
 
                        {
 
                            obj.Owner = this;
 
                            obj.ShowCompleteMessage = false;
 
                            obj.Start(area, i, MainMap.MapProvider, 100);
 
                        }
 
                    }
 
                }
 
            }
 
            else
 
            {
 
                MessageBox.Show("Select map area holding ALT", "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
 
            }
 
        }
 
 
        // clear cache - MDKfunctional
 
        private void btnCacheClear_Click(object sender, EventArgs e)
 
        {
 
            if (MessageBox.Show("Are You sure?", "Clear GMap.NET cache?", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
 
            {
 
                try
 
                {
 
                    MainMap.Manager.PrimaryCache.DeleteOlderThan(DateTime.Now, null);
 
                    MessageBox.Show("Done. Cache is clear.");
 
                }
 
                catch (Exception ex)
 
                {
 
                    MessageBox.Show(ex.Message);
 
                }
 
            }
 
        }
 
 
        // open disk cache location - MDKfunctional
 
        private void btnCacheLocationOpen_Click(object sender, EventArgs e)
 
        {
 
            try
 
            {
 
                string argument = "/select, \"" + MainMap.CacheLocation + "TileDBv5\"";
 
                System.Diagnostics.Process.Start("explorer.exe", argument);
 
            }
 
            catch (Exception ex)
 
            {
 
                MessageBox.Show("Failed to open: " + ex.Message, "GMap.NET", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
            }
 
        }
 
 
        #endregion
 
 
        #region chart click events
 
 
        //this method clears the background of all charts
 
        private void ResetChartColors()
 
        {
 
            chrtTopLeft.BackColor = Color.LightGray;
 
            chrtTopRight.BackColor = Color.LightGray;
 
            chrtBottomLeft.BackColor = Color.LightGray;
 
            chrtBottomRight.BackColor = Color.LightGray;
 
        }
 
 
        ///TODO: check min/max/average with real data
 
 
        //highlight Top Left chart on click and set text box values based on this chart
 
        private void chrtTopLeft_Click(object sender, EventArgs e)
 
        {
 
            ResetChartColors();
 
            chrtTopLeft.BackColor = Color.Gray;
 
            tboxChartData.Text = "Altitude";
 
            tboxCurrent.Text = tboxAtmoAltitude.Text;
 
            tboxAverage.Text = (velocitySum / chrtBottomRight.Series.FindByName("altitudeTrend").Points.Count).ToString();
 
            tboxMax.Text = chrtBottomRight.Series.FindByName("altitudeTrend").Points.FindMaxByValue().ToString();
 
            tboxMin.Text = chrtBottomRight.Series.FindByName("altitudeTrend").Points.FindMinByValue().ToString();
 
@@ -1226,515 +1226,500 @@ namespace Demo.WindowsForms
 
        }
 
 
        //write the data to CSV file -- usually seniordesign-ui\Demo.WindowsForms\bin\Debug
 
        private void WriteToCSV(string data)
 
        {
 
            string path = Directory.GetCurrentDirectory();
 
            string filename = path+"\\TransmissionData" + unixTime.Milliseconds + ".csv";
 
            using (StreamWriter writer = new StreamWriter(filename, true))
 
            {
 
                writer.WriteLine(data);
 
            }
 
        }
 
        
 
        //must change lat/long coords to properly place map marker
 
        float conv_coords(float in_coords)
 
        {
 
            //Initialize the location.
 
            float f = in_coords;
 
            // Get the first two digits by turning f into an integer, then doing an integer divide by 100;
 
            // firsttowdigits should be 77 at this point.
 
            int firsttwodigits = ((int)f) / 100;                               //This assumes that f < 10000.
 
            float nexttwodigits = f - (float)(firsttwodigits * 100);
 
            float theFinalAnswer = (float)(firsttwodigits + nexttwodigits / 60.0);
 
            return theFinalAnswer;
 
        }
 
 
        // add marker from an APRS transmission - MDKEdit
 
        private void addTrackerMarker(string lat, string lng)
 
        {
 
 
            double latitude = double.Parse(lat), longitude = double.Parse(lng);
 
            PointLatLng APRSloc = new PointLatLng();
 
            APRSloc.Lat = conv_coords((float)latitude);
 
            APRSloc.Lng = conv_coords((float)longitude)*-1;
 
 
            GMarkerGoogle m = new GMarkerGoogle(APRSloc, GMarkerGoogleType.blue_small);
 
 
            m.ToolTipText = "Tracker";
 
            m.ToolTipMode = MarkerTooltipMode.OnMouseOver;
 
            objects.Markers.Add(m);
 
        }
 
        
 
        //places text in the message box
 
        delegate void SetTextDelegate(string value);
 
        public void AddTextDelegate(string value)
 
        {
 
            if (InvokeRequired)
 
            {
 
                Invoke(new SetTextDelegate(AddTextDelegate), value);
 
            }
 
            else
 
            {
 
                tboxMessageBox.AppendText(value);// += value;
 
                textBoxMarkerCount.Text = objects.Markers.Count.ToString();
 
            }
 
        }
 
 
        //this is where most of the transmission processing is done
 
        delegate void ChartDataDelegate(string dataType, string data);
 
        public void ChartDelegate(string dataType, string data)
 
        {
 
            if (InvokeRequired)
 
            {
 
                Invoke(new ChartDataDelegate(ChartDelegate), dataType, data);
 
            }
 
            else
 
            {
 
                if (firstTransmissionDatum)
 
                {
 
                    ClearTboxColor();
 
                }
 
                ///UNIVERSAL DATA TYPES
 
                if (dataType.Equals("t"))  //board temperature
 
                {
 
                    string dataString = data.ToString();
 
                    if (dataString.StartsWith("9")) //Master Module
 
                    {
 
                        tboxMasterBoardTemp.Text = dataString.Substring(1);
 
                        tboxMasterBoardTemp.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("0")) //Atmo Module
 
                    {
 
                        tboxAtmoBoardTemp.Text = dataString.Substring(1);
 
                        tboxAtmoBoardTemp.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("1")) //Geiger Module
 
                    {
 
                        tboxGeigerBoardTemp.Text = dataString.Substring(1);
 
                        tboxGeigerBoardTemp.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("2")) //Camera Module
 
                    {
 
                        tboxCameraBoardTemp.Text = dataString.Substring(1);
 
                        tboxCameraBoardTemp.BackColor = Color.Chartreuse;
 
                    }
 
                }
 
                else if (dataType.Equals("l"))  //battery level
 
                else if (dataType.Equals("b"))  //battery level
 
                {
 
                    string dataString = data.ToString();
 
                    string dataString = data.Substring(0, data.Length - 1) + "." + data.Substring(data.Length-1);
 
 
                    if (dataString.StartsWith("9")) //Master Module
 
                    {
 
                        tboxMasterBatteryLevel.Text = dataString.Substring(1);
 
                        tboxMasterBatteryLevel.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("0")) //Atmo Module
 
                    {
 
                        tboxAtmoBatteryLevel.Text = dataString.Substring(1);
 
                        tboxAtmoBatteryLevel.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("1"))  //Geiger Module
 
                    {
 
                        tboxGeigerBatteryLevel.Text = dataString.Substring(1);
 
                        tboxGeigerBatteryLevel.BackColor = Color.Chartreuse;
 
                    }
 
                    else if (dataString.StartsWith("2")) //Camera Module
 
                    {
 
                        tboxCameraBatteryLevel.Text = dataString.Substring(1);
 
                        tboxCameraBatteryLevel.BackColor = Color.Chartreuse;
 
                    }
 
                }
 
                else if (dataType.Equals("i")) //Info Message
 
                {
 
                    AddTextDelegate("Info: " + data + "\r\n");
 
                }
 
                
 
                ///MASTER MODULE DATA TYPES
 
                else if (dataType.Equals("_"))  //latitude extra accuracy
 
                {
 
                    //TODO: check math and decimal placement
 
                    latitude += data.ToString();
 
                    tboxMasterLatitude.Text = latitude;
 
                    tboxMasterLatitude.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("|"))  //longitude extra accuracy
 
                {
 
                    //TODO: check math and decimal placement
 
                    longitude += data.ToString();
 
                    tboxMasterLongitude.Text = longitude;
 
                    tboxMasterLongitude.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("h"))  //HDOP
 
                {
 
                    tboxMasterHDOP.Text = data.ToString();
 
                    tboxMasterHDOP.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("v"))  //Velocity
 
                {
 
                    chrtBottomRight.Series.FindByName("velocityTrend").Points.AddY(double.Parse(data));
 
                    velocitySum += double.Parse(data);
 
                    tboxMasterVelocity.Text = data.ToString();
 
                    tboxMasterVelocity.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("s"))  //satellites in view
 
                {
 
                    tboxMasterSatellites.Text = data.ToString();
 
                    tboxMasterSatellites.BackColor = Color.Chartreuse;
 
                }
 
 
                ///ATMOSPHERIC MODULE DATA VALUES
 
                else if (dataType.Equals("C"))  //Air Temperature
 
                {
 
                    tboxAtmoAirTemp.Text = data.ToString();
 
                    tboxAtmoAirTemp.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("L"))  //Ambient Light
 
                {
 
                    tboxAtmoLight.Text = data.ToString();
 
                    tboxAtmoLight.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("H"))  //Humidity
 
                {
 
                    chrtTopRight.Series.FindByName("humidityTrend").Points.AddY(double.Parse(data));
 
                    humiditySum += double.Parse(data);
 
                    tboxAtmoHumidity.Text = data.ToString();
 
                    tboxAtmoHumidity.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("P"))  //Pressure
 
                {
 
                    chrtBottomLeft.Series.FindByName("pressureTrend").Points.AddY(double.Parse(data));
 
                    pressureSum += double.Parse(data);
 
                    tboxAtmoPressure.Text = data.ToString();
 
                    tboxAtmoPressure.BackColor = Color.Chartreuse;
 
                }
 
                else if (dataType.Equals("A"))  //Altitude
 
                {
 
                    chrtTopLeft.Series.FindByName("altitudeTrend").Points.AddY(double.Parse(data));
 
                    altitudeSum += double.Parse(data);
 
                    tboxAtmoAltitude.Text = data.ToString();
 
                    tboxAtmoAltitude.BackColor = Color.Chartreuse;
 
                }
 
                
 
                ///GEIGER MODULE DATA VALUES
 
                else if (dataType.Equals("R"))  //radiation (CPM)
 
                {
 
                    tboxGeigerRads.Text = data.ToString();
 
                    tboxGeigerRads.BackColor = Color.Chartreuse;
 
                }
 
 
                /// CAMERA MODULE DATA VALUES
 
 
                //INVALID DATA TYPE
 
                else
 
                {
 
                    AddTextDelegate("Info: " + data + "\r\n");
 
                }
 
            }
 
        }
 
 
        private void ClearTboxColor()
 
        {
 
            //tboxAtmoHumidity.BorderStyle = BorderStyle.FixedSingle;
 
            tboxMasterBoardTemp.BackColor = Color.White;
 
            tboxAtmoBoardTemp.BackColor = Color.White;
 
            tboxGeigerBoardTemp.BackColor = Color.White;
 
            tboxCameraBoardTemp.BackColor = Color.White;
 
            tboxMasterBatteryLevel.BackColor = Color.White;
 
            tboxAtmoBatteryLevel.BackColor = Color.White;
 
            tboxGeigerBatteryLevel.BackColor = Color.White;
 
            tboxCameraBatteryLevel.BackColor = Color.White;
 
            tboxMasterLatitude.BackColor = Color.White;
 
            tboxMasterLongitude.BackColor = Color.White;
 
            tboxMasterHDOP.BackColor = Color.White;
 
            tboxMasterVelocity.BackColor = Color.White;
 
            tboxMasterSatellites.BackColor = Color.White;
 
            tboxAtmoAirTemp.BackColor = Color.White;
 
            tboxAtmoLight.BackColor = Color.White;
 
            tboxAtmoHumidity.BackColor = Color.White;
 
            tboxAtmoPressure.BackColor = Color.White;
 
            tboxAtmoAltitude.BackColor = Color.White;
 
            tboxGeigerRads.BackColor = Color.White;
 
            return;
 
        }
 
 
        #endregion
 
 
        #region testing
 
        
 
        //currently simulates serial inputs
 
        string testData;
 
        int testIteration = 0;
 
        int testIteration = 50;
 
        private void btnTest_Click(object sender, EventArgs e)
 
        {
 
            switch (testIteration)
 
            {
 
                case 0:
 
                    testData = "KD8TDF-11>APRS,N8NQH-1,WIDE2*:/051919z3921.07N/08357.76WO63.36/41.178 ~v41.178~_937~|229~t929~s10~h0.79~t024~l056~t111~l10~P3411~C0~H999~A69147";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 1:
 
                    testData = "KD8TDF-11>APRS,N8NQH-1,WIDE2*:/051919z3921.20N/08357.31WO72.82/44.951 ~v44.951~_836~|685";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 2:
 
                    testData = "KD8TDF-11>APRS,N8NQH-1,WIDE2*:/051921z3921.71N/08355.84WO68.07/35.951 ~v35.951~_022~|024~t929~s10~h0.79~t022~l057~t111~l10~P3147~C0~H999~A70308";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 3:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051921z3921.71N/08355.84WO68.07/35.951 ~v35.951~_022~|024~t929~s10~h0.79~t022~l057~t111~l10~P3147~C0~H999~A70308";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 4:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051923z3922.04N/08354.25WO86.93/42.990 ~v42.990~_349~|968";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 5:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051924z3922.21N/08353.23WO84.56/30.156 ~v30.156~_164~|009";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 6:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051924z3922.21N/08353.23WO84.56/30.156 ~v30.156~_164~|009";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 7:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051925z3922.29N/08352.75WO70.13/40.926 ~v40.926~_762~|813~t930~s11~h0.74~t024~l056~t111~l10~P2814~C0~H999~A71889";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 8:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051928z3922.77N/08349.49WO80.58/48.331 ~v48.331~_045~|896~t930~s11~h0.73~t024~l056~t113~l10~P3205~C0~H999~A70046";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 9:
 
                    testData = "KD8TDF-11>APRS,N8NQH-1,WIDE2*:/051928z3922.77N/08349.49WO80.58/48.331 ~v48.331~_045~|896~t930~s11~h0.73~t024~l056~t113~l10~P3205~C0~H999~A70046";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 10:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051933z3923.24N/08346.56WO103.57/31.550 ~v31.550~_165~|142~t930~s10~h0.78~t022~l056~t113~l10~P7153~C0~H999~A57607";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 11:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051934z3923.38N/08345.75WO87.77/44.916 ~v44.916~_934~|738~t932~s10~h0.78~t022~l056~t113~l10~P8471~C0~H999~A54733";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 12:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051935z3923.42N/08345.41WO84.64/25.176 ~v25.176~_260~|774";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 13:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051937z3923.33N/08342.85WO87.66/35.760 ~v35.760~_489~|460~t929~s10~h0.87~t020~l056~t110~l10~P13239~C0~H999~A46693";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 14:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051937z3923.33N/08342.85WO87.66/35.760 ~v35.760~_489~|460~t929~s10~h0.87~t020~l056~t110~l10~P13239~C0~H999~A46693";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 15:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051938z3923.30N/08342.29WO93.89/39.613 ~v39.613~_208~|441";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 16:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051939z3923.28N/08341.71WO89.80/47.399 ~v47.399~_382~|785~t929~s10~h0.81~t020~l056~t110~l10~P15171~C0~H999~A44101";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 17:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051939z3923.28N/08341.71WO89.80/47.399 ~v47.399~_382~|785~t929~s10~h0.81~t020~l056~t110~l10~P15171~C0~H999~A44101";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 18:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051939z3923.29N/08341.21WO89.68/42.977 ~v42.977~_049~|692";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 19:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051940z3923.17N/08340.68WO104.09/41.096 ~v41.096~_196~|818~t928~s10~h0.81~t019~l056~t18~l10~P17216~C0~H999~A41631";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 20:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051940z3923.08N/08340.12WO99.91/40.414 ~v40.414~_749~|332";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 21:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051941z3923.06N/08339.67WO105.12/26.372 ~v26.372~_625~|764~t928~s10~h0.81~t019~l056~t16~l10~P19373~C0~H999~A39276";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 22:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051942z3922.93N/08339.26WO128.58/35.021 ~v35.021~_092~|564";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 23:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051942z3922.68N/08338.87WO136.93/37.963 ~v37.963~_409~|785~t926~s09~h0.87~t017~l056~t14~l10~P21733~C0~H999~A36927";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 24:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051942z3922.68N/08338.87WO136.93/37.963 ~v37.963~_409~|785~t926~s09~h0.87~t017~l056~t14~l10~P21733~C0~H999~A36927";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 25:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051943z3922.03N/08338.26WO160.38/56.614 ~v56.614~_060~|181~t924~s09~h0.87~t017~l056~t12~l10~P24231~C0~H999~A34657";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 26:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051944z3921.35N/08337.97WO163.68/88.044 ~v88.044~_733~|114";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 27:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051945z3920.52N/08337.69WO165.97/86.908 ~v86.908~_646~|070~t922~s09~h0.87~t015~l056~t11~l10~P26698~C0~H999~A32594";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 28:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051945z3920.52N/08337.69WO165.97/86.908 ~v86.908~_646~|070~t922~s09~h0.87~t015~l056~t11~l10~P26698~C0~H999~A32594";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 29:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051945z3919.65N/08337.35WO155.12/91.951 ~v91.951~_048~|484";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 30:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051946z3918.82N/08337.00WO159.97/90.062 ~v90.062~_362~|669~t920~s09~h0.96~t015~l056~t1-1~l10~P29320~C0~H999~A30566";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 31:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051946z3918.00N/08336.65WO158.88/83.565 ~v83.565~_177~|836";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 32:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051947z3917.24N/08336.30WO160.33/75.922 ~v75.922~_318~|316~t919~s09~h0.96~t013~l056~t11~l10~P31996~C0~H999~A28641";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 33:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051947z3916.50N/08335.94WO162.38/72.423 ~v72.423~_912~|245";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 34:
 
                    testData = "KD8TDF-11>APRS,WC8EMA,WIDE2*:/051947z3916.50N/08335.94WO162.38/72.423 ~v72.423~_912~|245";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 35:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051948z3915.80N/08335.61WO162.44/80.541 ~v80.541~_756~|326~t917~s08~h0.97~t013~l056~t12~l10~P34716~C0~H999~A26813";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 36:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051949z3915.10N/08335.30WO161.20/82.223 ~v82.223~_935~|370";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 37:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051949z3914.43N/08334.98WO159.63/62.921 ~v62.921~_493~|370~t915~s09~h0.89~t011~l056~t14~l10~P37541~C0~H999~A25036";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 38:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051950z3913.80N/08334.71WO164.45/64.565 ~v64.565~_434~|297";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 39:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051950z3913.22N/08334.46WO163.22/57.953 ~v57.953~_077~|680~t915~s09~h0.89~t011~l056~t16~l10~P40480~C0~H999~A23294";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 40:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051951z3912.62N/08334.20WO162.48/62.928 ~v62.928~_018~|886";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 41:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051952z3912.09N/08333.98WO158.93/62.192 ~v62.192~_550~|711~t913~s09~h0.90~t010~l056~t14~l10~P43509~C0~H999~A21607";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 42:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051952z3911.55N/08333.74WO160.42/53.084 ~v53.084~_827~|212";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 43:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051953z3911.02N/08333.46WO157.50/60.661 ~v60.661~_647~|296~t913~s09~h0.90~t010~l056~t12~l10~P46544~C0~H999~A20007";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 44:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051953z3910.49N/08333.21WO150.50/52.105 ~v52.105~_520~|688";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 45:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051954z3910.04N/08332.97WO146.63/42.412 ~v42.412~_652~|898~t911~s09~h0.99~t010~l056~t12~l10~P49829~C0~H999~A18370";
 
                    ParseIncomingData(testData);
 
                    break;
 
                case 46:
 
                    testData = "KD8TDF-11>APRS,WIDE2-1:/051955z3909.67N/08332.70WO147.20/47.361 ~v47.361~_446~|617";
 
                    ParseIncomingData(testData);
 
                    break;
 
                default:
 
                    break;
 
            }
 
            testIteration++;
 
            testIteration--;
 
        }
 
 
        public double GetRandomNumber(double minimum, double maximum)
 
        {
 
            Random random = new Random();
 
            return random.NextDouble() * (maximum - minimum) + minimum;
 
        }
 
 
        #endregion
 
 
        #region serial port setup/use
 
        public SerialPort port;// = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
 
        int comPort = 0;
 
        string callsign;
 
 
        //click event for Collect Data checkbox
 
        private void cboxCollectData_Click(object sender, EventArgs e)
 
        {
 
            //sets comPort and callsign, uncheck if parse does not work
 
            if (int.TryParse(tboxCOMPort.Text, out comPort))
 
            {
 
                callsign = tboxAPRSCallsign.Text;
 
                if (cboxCollectData.Checked)
 
                {
 
                    port = new SerialPort("COM" + comPort, 9600, Parity.None, 8, StopBits.One);
 
                    SerialInitialize();
 
                }
 
                else
 
                {
 
                    port.Close();
 
                }
 
                
 
            }
 
            else
 
            {
 
                cboxCollectData.Checked = false;
 
            }
 
 
            //disable callsign and port edits while collecting transmissions
 
            tboxAPRSCallsign.Enabled = !cboxCollectData.Checked;
 
            tboxCOMPort.Enabled = !cboxCollectData.Checked;
 
        }
 
        
 
        //inits the serial port and event handler
 
        public void SerialInitialize()
 
        {
 
            // http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx
 
            // Attach a method to be called when there is data waiting in the port's buffer
 
            port.DataReceived += new SerialDataReceivedEventHandler(ReceiveData);
 
 
            // Open the port for communications
 
            port.Open();
 
        }
 
 
        //process received data
 
        public void ReceiveData(object sender, SerialDataReceivedEventArgs e)
 
        {
 
            // Show all the incoming data in the port's buffer
 
            string testChk = port.ReadLine();
 
            ParseIncomingData(testChk);
 
        }
 
 
        //sets and opens the COM port
 
        delegate void SetSerialDelegate(int COM);
 
        public void setSerialPort(int COM)
 
        {
 
            if (InvokeRequired)
 
            {
 
                Invoke(new SetSerialDelegate(setSerialPort), COM);
 
            }
 
            else
 
            {
 
 
            }
 
        }
 
 
        #endregion
 
    }
 
}
 
 
                  
 
\ No newline at end of file
 
//known bugs: clicking on data graph. likely a cross threading issue
 
\ No newline at end of file
0 comments (0 inline, 0 general)