Esempio n. 1
0
 private void RTKDataShow(object sender, EventArgs e)
 {
     dataGridView_RTK.Rows[0].Cells["GPStime"].Value      = GPGGA.GetInstance().UTCtime;
     dataGridView_RTK.Rows[0].Cells["Latitude"].Value     = GPGGA.GetInstance().Latitude;
     dataGridView_RTK.Rows[0].Cells["Longitude"].Value    = GPGGA.GetInstance().Longitude;
     dataGridView_RTK.Rows[0].Cells["MsgStatus"].Value    = GPGGA.GetInstance().MsgStatus;
     dataGridView_RTK.Rows[0].Cells["PlanetNum"].Value    = GPGGA.GetInstance().PlanetNum;
     dataGridView_RTK.Rows[0].Cells["DiffCorDelay"].Value = GPGGA.GetInstance().DiffCorDelay;
     dataGridView_RTK.Rows[0].Cells["Yaw"].Value          = HEADINGA.GetInstance().Yaw;
 }
Esempio n. 2
0
        /// <summary>
        /// Private method for parsing the GPGGA NMEA sentence
        /// </summary>
        /// <param name="strGGA">GPGGA sentence</param>
        private void ParseGGA(string strGGA)
        {
            GPGGA = new GPGGA(strGGA);
            //fire the event.
            GpsEventArgs e = new GpsEventArgs
            {
                TypeOfEvent = GpsEventType.GPGGA,
                Sentence    = strGGA
            };

            NewProcessedGpsFix(this, e);
        }
        //private  static  GpsTranslation;
        private void DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string strRecv;

            string[] strGPS;
            strRecv = serialPort.ReadLine();
            int index = strRecv.IndexOf('$');

            if (index == -1)
            {
                return;
            }
            else
            {
                strRecv.Remove(0, index);
            }
            strGPS = strRecv.Replace('*', ',').Split(',');
            GpsProcess gpsProcess = new GpsProcess();

            switch (strGPS[0])
            {
            case "$GPGGA": {    //GPS定位信息
                if (strGPS.Length < 13)
                {
                    return;
                }
                GPGGA gpgga = new GPGGA();
                gpsProcess.ReadGPGGA(strGPS, gpgga);
                BeginInvoke(new MethodInvoker(delegate()
                    {
                        gpsProcess.WriteGPGGA(gpgga);
                        xy      = GpsTranslation.wgs2bd(gpsProcess.Latitude, gpsProcess.Longitude);
                        Jd.Text = "经度:" + xy[0].ToString();    //lon
                        Wd.Text = "纬度:" + xy[1].ToString();    //lat
                    }));
                break;
            }

            case "$GPVTG": {    //地面速度信息
                if (strGPS.Length < 10)
                {
                    return;
                }
                GPVTG gpvtg = new GPVTG();
                gpsProcess.ReadGPVTG(strGPS, gpvtg);
                BeginInvoke(new MethodInvoker(delegate() { speed.Text = "速度:" + gpsProcess.WriteGPVTG(gpvtg); }));
                break;
            }

            default: break;
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Initializes a GpsHandler for communication with GPS receiver.
        /// The GpsHandler is used for communication with the GPS device and process information from the GPS revice.
        /// </summary>
        public GpsHandler()
        {
            _disposed           = false;
            NewProcessedGpsFix += GpsEventHandler;

            //Link event from GPS receiver to process data function
            GpsPort.NewGpsData += GpsDataEventHandler;
            GPRMC = new GPRMC();
            GPGGA = new GPGGA();
            GPGSA = new GPGSA();
            GPRMC = new GPRMC();
            PGRME = new GPRME();
            GPGSV = new GPGSV();
        }
Esempio n. 5
0
 /// <summary>
 /// Disposes the GpsHandler and if nessesary calls Stop()
 /// </summary>
 public void Dispose()
 {
     if (!_disposed)
     {
         Stop();
         GpsPort.Dispose();
         GPGGA     = null;
         GPGLL     = null;
         GPGSA     = null;
         GPRMC     = null;
         PGRME     = null;
         GpsPort   = null;
         _disposed = true;
     }
     GC.SuppressFinalize(this);
 }
Esempio n. 6
0
 public void ReadGPGGA(string[] strGPS, GPGGA gpgga)
 {
     try
     {
         gpgga.UTCTime           = DateTime.FromOADate(Convert.ToDouble(strGPS[1]));
         gpgga.Latitude          = string.IsNullOrEmpty(strGPS[2]) ? 0 : Convert.ToDouble(strGPS[2]);
         gpgga.LatitudeNS        = string.IsNullOrEmpty(strGPS[3]) ? ' ' : Convert.ToChar(strGPS[3]);
         gpgga.Longitude         = string.IsNullOrEmpty(strGPS[4]) ? 0 : Convert.ToDouble(strGPS[4]);
         gpgga.LongitudeEW       = string.IsNullOrEmpty(strGPS[5]) ? ' ' : Convert.ToChar(strGPS[5]);
         gpgga.Quality           = string.IsNullOrEmpty(strGPS[6]) ? 0 : Convert.ToInt32(strGPS[6]);
         gpgga.UseSatelliteCount = string.IsNullOrEmpty(strGPS[7]) ? 0 : Convert.ToInt32(strGPS[7]);
         gpgga.precision         = string.IsNullOrEmpty(strGPS[8]) ? 0 : Convert.ToDouble(strGPS[8]);//
         gpgga.SeaLevelHeight    = string.IsNullOrEmpty(strGPS[9]) ? 0 : Convert.ToDouble(strGPS[9]);
         //10为单位(米:M)
         gpgga.GeoidalHeight = string.IsNullOrEmpty(strGPS[11]) ? 0 : Convert.ToDouble(strGPS[11]);
         //12为单位(米:M)
         gpgga.DifferenceDeadline             = string.IsNullOrEmpty(strGPS[13]) ? 0 : Convert.ToDouble(strGPS[13]);
         gpgga.DifferenceReferenceBaseStation = string.IsNullOrEmpty(strGPS[14]) ? 0 : Convert.ToDouble(strGPS[14]);
     }
     catch { }
 }
Esempio n. 7
0
        private void RTKDataDecode(string[] dat)
        {
            switch (dat[0])
            {
            case "#HEADINGA":
                if (dat.Length == 26)
                {
                    HEADINGA.GetInstance().Yaw = Convert.ToSingle(dat[12]);;
                }
                break;

            case "$GPGGA":
                if (dat.Length == 15)
                {
                    GPGGA.GetInstance().LogHeader        = dat[0];
                    GPGGA.GetInstance().UTCtime          = Convert.ToSingle(dat[1]);
                    GPGGA.GetInstance().Latitude         = Convert.ToSingle(dat[2]);
                    GPGGA.GetInstance().LatitudeDir      = dat[3];
                    GPGGA.GetInstance().Longitude        = Convert.ToSingle(dat[4]);
                    GPGGA.GetInstance().LongitudeDir     = dat[5];
                    GPGGA.GetInstance().MsgStatus        = (byte)dat[6].ToInt32();
                    GPGGA.GetInstance().PlanetNum        = (byte)dat[7].ToInt32();
                    GPGGA.GetInstance().DopLevel         = dat[8].ToLong();
                    GPGGA.GetInstance().AntennaPlanetNum = dat[9].ToLong();
                    GPGGA.GetInstance().AntennaUnit      = dat[10];
                    GPGGA.GetInstance().SeaPlanetNum     = dat[11].ToLong();
                    GPGGA.GetInstance().SeaUnit          = dat[12];
                    GPGGA.GetInstance().DiffCorDelay     = (byte)dat[13].ToInt32();
                    //GPGGA.GetInstance().ReferenceId        = dat[14];
                    //GPGGA.GetInstance().Crc                = (byte)dat[15].ToInt32();
                }
                break;

            case "$GPRMC":
                break;

            default:
                break;
            }
        }
Esempio n. 8
0
        public void WriteGPGGA(GPGGA gpgga)
        {
            Longitude = gpgga.Longitude / 100;
            Latitude  = gpgga.Latitude / 100;

            /*
             * label_wd.Text = gpgga.Longitude.ToString() + gpgga.LongitudeEW;
             * label_jd.Text = gpgga.Latitude.ToString() + gpgga.LatitudeNS;
             *
             * label_utcsj.Text = gpgga.UTCTime.ToLongTimeString();
             * label_spjdyz.Text = gpgga.precision.ToString();
             * label_jswzwxsl.Text = gpgga.UseSatelliteCount.ToString();
             * label_jd.Text = gpgga.Latitude.ToString() + gpgga.LatitudeNS.ToString();
             * label_cfzID.Text = gpgga.DifferenceReferenceBaseStation.ToString();
             * label_cfsj.Text = gpgga.DifferenceDeadline.ToString();
             * label_hbgd.Text = gpgga.SeaLevelHeight.ToString() + "米";
             * label_ddszmgd.Text = gpgga.GeoidalHeight.ToString() + "米";
             *
             * switch (gpgga.Quality)
             * {//0=未定位,1=非差分定位,2=差分定位,6=正在估算
             *  case 0:
             *      label_gpsstatus.Text = "未定位";
             *      break;
             *  case 1:
             *      label_gpsstatus.Text = "非差分定位";
             *      break;
             *  case 2:
             *      label_gpsstatus.Text = "差分定位";
             *      break;
             *  case 6:
             *      label_gpsstatus.Text = "正在估算";
             *      break;
             *  default:
             *      label_gpsstatus.Text = "";
             *      break;
             * }*/
        }
Esempio n. 9
0
 string GetParameter(GPGGA param)
 {
     return(parameters[(int)param]);
 }
Esempio n. 10
0
        /// <summary>
        /// Initializes a GpsHandler for communication with GPS receiver.
        /// The GpsHandler is used for communication with the GPS device and process information from the GPS revice.
        /// </summary>
        public GpsHandler()
        {
            _disposed = false;
            NewProcessedGpsFix += GpsEventHandler;

            //Link event from GPS receiver to process data function
            GpsPort.NewGpsData += GpsDataEventHandler;
            GPRMC = new GPRMC();
            GPGGA = new GPGGA();
            GPGSA = new GPGSA();
            GPRMC = new GPRMC();
            PGRME = new GPRME();
            GPGSV = new GPGSV();
        }
Esempio n. 11
0
 /// <summary>
 /// Private method for parsing the GPGGA NMEA sentence
 /// </summary>
 /// <param name="strGGA">GPGGA sentence</param>
 private void ParseGGA(string strGGA)
 {
     GPGGA = new GPGGA(strGGA);
     //fire the event.
     GpsEventArgs e = new GpsEventArgs
                          {
                              TypeOfEvent = GpsEventType.GPGGA,
                              Sentence = strGGA
                          };
     NewProcessedGpsFix(this, e);
 }
Esempio n. 12
0
 /// <summary>
 /// Disposes the GpsHandler and if nessesary calls Stop()
 /// </summary>
 public void Dispose()
 {
     if (!_disposed)
     {
         Stop();
         GpsPort.Dispose();
         GPGGA = null;
         GPGLL = null;
         GPGSA = null;
         GPRMC = null;
         PGRME = null;
         GpsPort = null;
         _disposed = true;
     }
     GC.SuppressFinalize(this);
 }