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; }
/// <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; } }
/// <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(); }
/// <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); }
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 { } }
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; } }
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; * }*/ }
string GetParameter(GPGGA param) { return(parameters[(int)param]); }
/// <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(); }
/// <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); }
/// <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); }