⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpsform.cs

📁 功能:基于windows mobile 的地图查看器。使用vs2005开发
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using GPSExample.Util;

namespace cfWorldWind
{
	public partial class GpsForm : Form
	{
		private GPSReader _gpsReader;

		public GpsForm(GPSReader gpsReader)
		{
			InitializeComponent();

			this._gpsReader = gpsReader;
		}
		
		private void GpsForm_Load(object sender, EventArgs e)
		{
			_gpsReader.OnGPSMessage += new GPSEventHandler(_gpsReader_OnGPSMessage);
			_gpsReader.OnGPSReadStart += new EventHandler(_gpsReader_OnGPSReadStart);
			_gpsReader.OnGPSReadStop += new EventHandler(_gpsReader_OnGPSReadStop);

			UpdateButtons();
		}

		private void GpsForm_Closing(object sender, CancelEventArgs e)
		{
			_gpsReader.OnGPSMessage -= new GPSEventHandler(_gpsReader_OnGPSMessage);
			_gpsReader.OnGPSReadStart -= new EventHandler(_gpsReader_OnGPSReadStart);
			_gpsReader.OnGPSReadStop -= new EventHandler(_gpsReader_OnGPSReadStop);
		}

		private void UpdateButtons()
		{
			if (_gpsReader.ReadData == true)
			{
				btnStart.Enabled = false;
				btnStop.Enabled = true;
			}
			else
			{
				btnStart.Enabled = true;
				btnStop.Enabled = false;
			}
		}

		private void btnStart_Click(object sender, EventArgs e)
		{
			try
			{
				string comPort = txtCom.Text.Trim();
				string strBaud = txtBaud.Text.Trim();
				int baudRate = Int32.Parse(strBaud);

				//_gpsReader = new GPSReader(comPort, baudRate);
				_gpsReader.PortName = comPort;
				_gpsReader.BaudRate = baudRate;

				lblMessageType.Text = "Read Starting...";
				_gpsReader.StartRead();
				UpdateButtons();
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.ToString());
			}
		}

		private void btnStop_Click(object sender, EventArgs e)
		{
			try
			{
				lblMessageType.Text = "Read Stopping...";
				_gpsReader.StopRead();

				UpdateButtons();
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.ToString());
			}
		}

		/// <summary>
		/// This event is called everytime a GPS sentence is received by the GPSReader
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="arg"></param>
		private void _gpsReader_OnGPSMessage(object sender, GPSEventArgs arg)
		{
			// Add the complete sentence to the listbox
			lbMessageDisplay.Items.Insert(0, arg.MessageText);
			if (lbMessageDisplay.Items.Count > 8)
				lbMessageDisplay.Items.RemoveAt(8);

			// Update the appropriate screen fields based on the message type
			switch (arg.MessageType)
			{
				case "GPGGA":
					lblTime.Text = ((int)arg.Time).ToString("D6");	// Show only whole time value
					lblLat.Text = arg.Lat.ToString("F6");			// Show exactly 6 decimal places
					lblLatDirection.Text = arg.LatDirection;
					lblLon.Text = arg.Lon.ToString("F6");			// Show exactly 6 decimal places
					lblLonDirection.Text = arg.LonDirection;
					lblNumSats.Text = arg.NumSats.ToString();
					lblQuality.Text = arg.Quality.ToString();
					break;
				case "GPGSA":
					lblFixType.Text = arg.FixType.ToString();
					break;
				case "GPRMC":
					lblBearing.Text = arg.Bearing.ToString();
					break;
				case "GPVTG":
					lblBearing.Text = arg.Bearing.ToString();
					break;
			}
		}

		/// <summary>
		/// This method is called when the background thread enters the GPS Read loop
		/// It is not required that your code handle this event.  It simply provides a confirmation
		/// that the reading process has actually begun
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="arg"></param>
		private void _gpsReader_OnGPSReadStart(object sender, EventArgs arg)
		{
			lblMessageType.Text = "Mode: " + _gpsReader.ActiveReadMode.ToString();
		}

		/// <summary>
		/// This method is called when the background thread exits the GPS Read loop
		/// It is not required that your code handle this event.  It simply provides a notification
		/// that the read loop is shutting down.  The event fires whether the thread terminated because
		/// of a call to StopRead or if an error occured.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="arg"></param>
		private void _gpsReader_OnGPSReadStop(object sender, EventArgs arg)
		{
			lblMessageType.Text = "Read Stopped";
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -