.net GPS导航

14 篇文章 0 订阅

使用.NET语言编写封装的GPS NMEA协议解析库,开发人员只需设置好串口参数,即可以事件方式处理GPS信息。

VB.NET代码

Public Class Form1
    Private WithEvents gpsobj As Gps.Nmea.GpsProcess

 

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        gpsobj.Stops()
        gpsobj.Dispose()
        End
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CheckForIllegalCrossThreadCalls = False
        gpsobj = New Gps.Nmea.GpsProcess(New IO.Ports.SerialPort("COM3", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One))

        gpsobj.Starts()
    End Sub

    Private Sub gpsobj_GpggaArrive(ByVal e As Gps.Nmea.NmeaGpgga) Handles gpsobj.GpggaArrive
        Dim x As Gps.Nmea.NmeaGpgga
        x = e
        Me.TextBox1.Text = x.GpsUtcTime.ToString
        Me.TextBox2.Text = x.Latitude
        Me.TextBox3.Text = x.GpsLatitudeType.ToString
        Me.TextBox4.Text = x.Longitude
        Me.TextBox5.Text = x.GpsLongitudeType.ToString
        Me.TextBox6.Text = x.GpsCurrentStatus.ToString
        Me.TextBox7.Text = x.UseSatelliteCount
        Me.TextBox8.Text = x.HorizontalPrecisionFactor
        Me.TextBox9.Text = x.AntennaHeightAboveSeaLevel
        Me.TextBox10.Text = x.GroundLevelHeight
        Me.TextBox11.Text = x.DifferentialGpsData
        Me.TextBox12.Text = x.DifferentialReferenceBaseStationLabel


    End Sub

    Private Sub gpsobj_GpgllArrive(ByVal e As Gps.Nmea.NmeaGpgll) Handles gpsobj.GpgllArrive
        Me.TextBox29.Text = e.Latitude
        Me.TextBox30.Text = e.GpsLatitudeType.ToString
        Me.TextBox31.Text = e.Longitude
        Me.TextBox32.Text = e.GpsLongitudeType.ToString
        Me.TextBox33.Text = e.GpsUtcTime.ToString

    End Sub

    Private Sub gpsobj_GpgsaArrive(ByVal e As Gps.Nmea.NmeaGpgsa) Handles gpsobj.GpgsaArrive
        Me.TextBox34.Text = e.GpsPositioningMode.ToString
        Me.TextBox35.Text = e.GpsPositioningType.ToString
        Me.TextBox36.Text = e.ChannelPRN(1)
        Me.TextBox37.Text = e.ChannelPRN(2)
        Me.TextBox38.Text = e.ChannelPRN(3)
        Me.TextBox39.Text = e.ChannelPRN(4)
        Me.TextBox40.Text = e.ChannelPRN(5)
        Me.TextBox41.Text = e.ChannelPRN(6)
        Me.TextBox42.Text = e.ChannelPRN(7)
        Me.TextBox43.Text = e.ChannelPRN(8)
        Me.TextBox44.Text = e.ChannelPRN(9)
        Me.TextBox45.Text = e.ChannelPRN(10)
        Me.TextBox46.Text = e.ChannelPRN(11)
        Me.TextBox47.Text = e.ChannelPRN(12)
        Me.TextBox48.Text = e.PDOP
        Me.TextBox49.Text = e.HDOP
        Me.TextBox50.Text = e.VDOP

    End Sub

    Private Sub gpsobj_GprmcArrive(ByVal e As Gps.Nmea.NmeaGprmc) Handles gpsobj.GprmcArrive
        Me.TextBox18.Text = e.GpsUtcTime.ToString
        Me.TextBox19.Text = e.GpsStatus.ToString
        Me.TextBox20.Text = e.Latitude
        Me.TextBox21.Text = e.GpsLatitudeType.ToString
        Me.TextBox22.Text = e.Longitude
        Me.TextBox23.Text = e.GpsLongitudeType.ToString
        Me.TextBox24.Text = e.SpeedKnots & " Knots"
        Me.TextBox25.Text = e.Azimuth & "°"
        Me.TextBox26.Text = e.GpsUtcDate.ToString
        Me.TextBox27.Text = e.MagneticDeclination & "°"
        Me.TextBox28.Text = e.MagneticDeclinationDirection.ToString

    End Sub

    Private Sub gpsobj_GpvtgArrive(ByVal e As Gps.Nmea.NmeaGpvtg) Handles gpsobj.GpvtgArrive
        Dim z As Gps.Nmea.NmeaGpvtg
        z = e
        Me.TextBox14.Text = z.TrueNorthMovementAngle & "°"
        Me.TextBox15.Text = z.MagneticNorthMovementAngle & "°"
        Me.TextBox16.Text = z.KnotsHorizontalMovementSpeed & "Knots"
        Me.TextBox17.Text = z.kmhHorizontalMovementSpeed & "km/h"
    End Sub

    Private Sub gpsobj_GpzdaArrive(ByVal e As Gps.Nmea.NmeaGpzda) Handles gpsobj.GpzdaArrive

        Dim y As Gps.Nmea.NmeaGpzda
        y = e
        Me.TextBox13.Text = y.ToString


    End Sub

  
    Private Sub TextBox36_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox47.TextChanged, TextBox46.TextChanged, TextBox45.TextChanged, TextBox44.TextChanged, TextBox43.TextChanged, TextBox42.TextChanged, TextBox41.TextChanged, TextBox40.TextChanged, TextBox39.TextChanged, TextBox38.TextChanged, TextBox37.TextChanged, TextBox36.TextChanged
        Dim txt As TextBox
        txt = CType(sender, TextBox)
        If txt.Text <> 0 Then
            txt.BackColor = Color.Green
        Else
            txt.BackColor = Color.Red
        End If
    End Sub
End Class

C#代码

using System.Diagnostics;
using System;
using System.Xml.Linq;
using System.Windows.Forms;
using System.Collections;
using System.Drawing;
using Microsoft.VisualBasic;
using System.Data;
using System.Collections.Generic;
using System.Linq;

using Microsoft.VisualBasic.CompilerServices;

namespace WindowsApplication1
{
	public partial class Form1
	{
		public Form1()
		{
			InitializeComponent();
			
			if (defaultInstance == null)
				defaultInstance = this;
		}
		
#region Default Instance
		
		private static Form1 defaultInstance;

public static Form1 Default
		{
			get
			{
				if (defaultInstance == null)
				{
					defaultInstance = new Form1();
					defaultInstance.FormClosed += new FormClosedEventHandler(defaultInstance_FormClosed);
				}
				
				return defaultInstance;
			}
			set
			{
				defaultInstance = value;
			}
		}
		
		static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e)
		{
			defaultInstance = null;
		}
		
#endregion
		private Gps.Nmea.GpsProcess gpsobj;
		
		
		public void Form1_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
		{
			gpsobj.Stops();
			gpsobj.Dispose();
			ProjectData.EndApp();
		}
		
		public void Form1_Load(System.Object sender, System.EventArgs e)
		{
			this.CheckForIllegalCrossThreadCalls = false;
			gpsobj = new Gps.Nmea.GpsProcess(new System.IO.Ports.SerialPort("COM3", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One));
			gpsobj.GpggaArrive += gpsobj_GpggaArrive;
			gpsobj.GpgllArrive += gpsobj_GpgllArrive;
			gpsobj.GpgsaArrive += gpsobj_GpgsaArrive;
			gpsobj.GprmcArrive += gpsobj_GprmcArrive;
			gpsobj.GpvtgArrive += gpsobj_GpvtgArrive;
			gpsobj.GpzdaArrive += gpsobj_GpzdaArrive;
			
			gpsobj.Starts();
			
		}
		
		private void gpsobj_GpggaArrive(Gps.Nmea.NmeaGpgga e)
		{
			Gps.Nmea.NmeaGpgga x = default(Gps.Nmea.NmeaGpgga);
			x = e;
			this.TextBox1.Text = x.GpsUtcTime.ToString();
			this.TextBox2.Text = System.Convert.ToString(x.Latitude);
			this.TextBox3.Text = x.GpsLatitudeType.ToString();
			this.TextBox4.Text = System.Convert.ToString(x.Longitude);
			this.TextBox5.Text = x.GpsLongitudeType.ToString();
			this.TextBox6.Text = x.GpsCurrentStatus.ToString();
			this.TextBox7.Text = System.Convert.ToString(x.UseSatelliteCount);
			this.TextBox8.Text = System.Convert.ToString(x.HorizontalPrecisionFactor);
			this.TextBox9.Text = System.Convert.ToString(x.AntennaHeightAboveSeaLevel);
			this.TextBox10.Text = System.Convert.ToString(x.GroundLevelHeight);
			this.TextBox11.Text = System.Convert.ToString(x.DifferentialGpsData);
			this.TextBox12.Text = System.Convert.ToString(x.DifferentialReferenceBaseStationLabel);
			
		}
		
		private void gpsobj_GpgllArrive(Gps.Nmea.NmeaGpgll e)
		{
			this.TextBox29.Text = System.Convert.ToString(e.Latitude);
			this.TextBox30.Text = e.GpsLatitudeType.ToString();
			this.TextBox31.Text = System.Convert.ToString(e.Longitude);
			this.TextBox32.Text = e.GpsLongitudeType.ToString();
			this.TextBox33.Text = e.GpsUtcTime.ToString();
			
		}
		
		private void gpsobj_GpgsaArrive(Gps.Nmea.NmeaGpgsa e)
		{
			this.TextBox34.Text = e.GpsPositioningMode.ToString();
			this.TextBox35.Text = e.GpsPositioningType.ToString();
			this.TextBox36.Text = e.ChannelPRN(1);
			this.TextBox37.Text = e.ChannelPRN(2);
			this.TextBox38.Text = e.ChannelPRN(3);
			this.TextBox39.Text = e.ChannelPRN(4);
			this.TextBox40.Text = e.ChannelPRN(5);
			this.TextBox41.Text = e.ChannelPRN(6);
			this.TextBox42.Text = e.ChannelPRN(7);
			this.TextBox43.Text = e.ChannelPRN(8);
			this.TextBox44.Text = e.ChannelPRN(9);
			this.TextBox45.Text = e.ChannelPRN(10);
			this.TextBox46.Text = e.ChannelPRN(11);
			this.TextBox47.Text = e.ChannelPRN(12);
			this.TextBox48.Text = System.Convert.ToString(e.PDOP);
			this.TextBox49.Text = System.Convert.ToString(e.HDOP);
			this.TextBox50.Text = System.Convert.ToString(e.VDOP);
			
		}
		
		private void gpsobj_GprmcArrive(Gps.Nmea.NmeaGprmc e)
		{
			this.TextBox18.Text = e.GpsUtcTime.ToString();
			this.TextBox19.Text = e.GpsStatus.ToString();
			this.TextBox20.Text = System.Convert.ToString(e.Latitude);
			this.TextBox21.Text = e.GpsLatitudeType.ToString();
			this.TextBox22.Text = System.Convert.ToString(e.Longitude);
			this.TextBox23.Text = e.GpsLongitudeType.ToString();
			this.TextBox24.Text = e.SpeedKnots + " Knots";
			this.TextBox25.Text = e.Azimuth + "°";
			this.TextBox26.Text = e.GpsUtcDate.ToString();
			this.TextBox27.Text = e.MagneticDeclination + "°";
			this.TextBox28.Text = e.MagneticDeclinationDirection.ToString();
			
		}
		
		private void gpsobj_GpvtgArrive(Gps.Nmea.NmeaGpvtg e)
		{
			Gps.Nmea.NmeaGpvtg z = default(Gps.Nmea.NmeaGpvtg);
			z = e;
			this.TextBox14.Text = z.TrueNorthMovementAngle + "°";
			this.TextBox15.Text = z.MagneticNorthMovementAngle + "°";
			this.TextBox16.Text = z.KnotsHorizontalMovementSpeed + "Knots";
			this.TextBox17.Text = z.kmhHorizontalMovementSpeed + "km/h";
		}
		
		private void gpsobj_GpzdaArrive(Gps.Nmea.NmeaGpzda e)
		{
			
			Gps.Nmea.NmeaGpzda y = default(Gps.Nmea.NmeaGpzda);
			y = e;
			this.TextBox13.Text = y.ToString();
			
			
		}
		
		
		public void TextBox36_TextChanged(System.Object sender, System.EventArgs e)
		{
			TextBox txt = default(TextBox);
			txt = (TextBox) sender;
			if (txt.Text != "0")
			{
				txt.BackColor = Color.Green;
			}
			else
			{
				txt.BackColor = Color.Red;
			}
		}
	}
	
}




<span style="font-weight: bold; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Gps.DLL库文件,可在我的资源中下载。</span>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值