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

VB.NET代码

Public Class Form1Private WithEvents gpsobj As Gps.Nmea.GpsProcessPrivate Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosinggpsobj.Stops()gpsobj.Dispose()EndEnd SubPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadMe.CheckForIllegalCrossThreadCalls = Falsegpsobj = New Gps.Nmea.GpsProcess(New IO.Ports.SerialPort("COM3", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One))gpsobj.Starts()End SubPrivate Sub gpsobj_GpggaArrive(ByVal e As Gps.Nmea.NmeaGpgga) Handles gpsobj.GpggaArriveDim x As Gps.Nmea.NmeaGpggax = eMe.TextBox1.Text = x.GpsUtcTime.ToStringMe.TextBox2.Text = x.LatitudeMe.TextBox3.Text = x.GpsLatitudeType.ToStringMe.TextBox4.Text = x.LongitudeMe.TextBox5.Text = x.GpsLongitudeType.ToStringMe.TextBox6.Text = x.GpsCurrentStatus.ToStringMe.TextBox7.Text = x.UseSatelliteCountMe.TextBox8.Text = x.HorizontalPrecisionFactorMe.TextBox9.Text = x.AntennaHeightAboveSeaLevelMe.TextBox10.Text = x.GroundLevelHeightMe.TextBox11.Text = x.DifferentialGpsDataMe.TextBox12.Text = x.DifferentialReferenceBaseStationLabelEnd SubPrivate Sub gpsobj_GpgllArrive(ByVal e As Gps.Nmea.NmeaGpgll) Handles gpsobj.GpgllArriveMe.TextBox29.Text = e.LatitudeMe.TextBox30.Text = e.GpsLatitudeType.ToStringMe.TextBox31.Text = e.LongitudeMe.TextBox32.Text = e.GpsLongitudeType.ToStringMe.TextBox33.Text = e.GpsUtcTime.ToStringEnd SubPrivate Sub gpsobj_GpgsaArrive(ByVal e As Gps.Nmea.NmeaGpgsa) Handles gpsobj.GpgsaArriveMe.TextBox34.Text = e.GpsPositioningMode.ToStringMe.TextBox35.Text = e.GpsPositioningType.ToStringMe.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.PDOPMe.TextBox49.Text = e.HDOPMe.TextBox50.Text = e.VDOPEnd SubPrivate Sub gpsobj_GprmcArrive(ByVal e As Gps.Nmea.NmeaGprmc) Handles gpsobj.GprmcArriveMe.TextBox18.Text = e.GpsUtcTime.ToStringMe.TextBox19.Text = e.GpsStatus.ToStringMe.TextBox20.Text = e.LatitudeMe.TextBox21.Text = e.GpsLatitudeType.ToStringMe.TextBox22.Text = e.LongitudeMe.TextBox23.Text = e.GpsLongitudeType.ToStringMe.TextBox24.Text = e.SpeedKnots & " Knots"Me.TextBox25.Text = e.Azimuth & "°"Me.TextBox26.Text = e.GpsUtcDate.ToStringMe.TextBox27.Text = e.MagneticDeclination & "°"Me.TextBox28.Text = e.MagneticDeclinationDirection.ToStringEnd SubPrivate Sub gpsobj_GpvtgArrive(ByVal e As Gps.Nmea.NmeaGpvtg) Handles gpsobj.GpvtgArriveDim z As Gps.Nmea.NmeaGpvtgz = eMe.TextBox14.Text = z.TrueNorthMovementAngle & "°"Me.TextBox15.Text = z.MagneticNorthMovementAngle & "°"Me.TextBox16.Text = z.KnotsHorizontalMovementSpeed & "Knots"Me.TextBox17.Text = z.kmhHorizontalMovementSpeed & "km/h"End SubPrivate Sub gpsobj_GpzdaArrive(ByVal e As Gps.Nmea.NmeaGpzda) Handles gpsobj.GpzdaArriveDim y As Gps.Nmea.NmeaGpzday = eMe.TextBox13.Text = y.ToStringEnd SubPrivate 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.TextChangedDim txt As TextBoxtxt = CType(sender, TextBox)If txt.Text <> 0 Thentxt.BackColor = Color.GreenElsetxt.BackColor = Color.RedEnd IfEnd 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 Instanceprivate 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;}#endregionprivate 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>

.net GPS导航相关推荐

  1. 2022-2028年中国GPS导航行业投资分析及前景预测报告

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国GPS导航行业市场行业相关概述.中国G ...

  2. wince 德赛西威2413_【图】GPS导航/Wince6.0系统 德赛西威迈腾车载导航改装评测_汽配中国网...

    大众新迈腾一直都是深受消费者喜爱的一款车,但是原车不带屏让习惯潮流的车主们总觉得不够满意,这位1.8T大众新迈腾车主就特地到永日音响改装德赛西威导航,并且加装了倒车后视,丰富了数字电视等多媒体影音娱乐 ...

  3. 【转】电脑GPS导航软件下载,教你把笔记本做成GPS

    在开始之前,先说一下,相信很多朋友在谷哥搜索"电脑GPS导航软件"时,都很难找到真正的下载地址,多数是只能下载到灵图的破解文件,那么,本文不同,本文不但教你怎么打造电脑GPS,而且 ...

  4. android gps导航省电,一种GPS导航中省电的系统和方法与流程

    一种gps导航中省电的系统和方法,应用于通过gps(或者类似的北斗.伽利略)导航的领域. 背景技术: 在移动设备领域(手机.车载导航等),通过卫星导航应用非常普遍,几乎全部的手机,大部分的汽车,自身都 ...

  5. android gps导航省电,具有省电功能的gps导航系统及其省电方法

    具有省电功能的gps导航系统及其省电方法 [专利说明] [技术领域] 本发明是一种具有省电功能的GPS导航系统及其省电方法. [0001][[背景技术]] 利用GPS定位卫星,在全球范围内实时进行定位 ...

  6. 什么是RTK?GPS导航和RTK的基本原理有什么不同?

    极飞科技XAG在 2015 年开始自营作业,当时使用的是单点 GPS, 遇到了各种罗盘干扰.航迹偏移.起降需人工干预等问题:2015 年下半年开始做 RTK 相关的研发,努力实现全自主飞行.极飞的 P ...

  7. matlab 年积日与年月日转换,空间大地测量与GPS导航定位时间系统相互转换,格里高利时通用时儒略日,GPS时,年积日相互转换的源代码程序...

    空间大地测量与GPS导航定位所需时间系统的相互转换(包括格里高利时(通用时),儒略日,GPS时,年积日,各个时间系统的表示及其相互之间的转换,文章末尾并附上各个时间系统相互转换的源代码程序) 进行空间 ...

  8. GPS导航(4):SIM908模块

    SIM908 是国内芯讯通无线科技(上海)有限公司生产的一款集成 GPS 导航技术的四频 GSM/GPRS 通信模块. GPS 具有 42 个接收通道 可以接收 GPS L1 C/A 码 跟踪灵敏性为 ...

  9. Android平台5款GPS导航软件横向对比测试----纸上谈兵-模拟导航

    二,纸上谈兵-模拟导航 市区路线规划合理程度对比 在本环节评测中,我们将考察重点放在导航软件能否规避单行线,绕开禁止左转的路线.模拟线路为"天通苑"-"南苑机场" ...

  10. 导航网站服务器,gps导航云服务器

    gps导航云服务器 内容精选 换一换 云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略.当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上,提高业 ...

最新文章

  1. 华为年薪200万招募的“天才少年”,一句话让我陷入了深思
  2. return2libc学习笔记
  3. 超级实用且不花哨的js代码大全
  4. 【深度学习】带有 CRF-RNN 层的 U-Net模型
  5. 抛开flash,自己开发实现C++ RTMP直播流播放器
  6. Docker中部署mysql后SpringBoot连接时提示表不存在(修改表名忽略大小写)
  7. Zuul鉴权和添加用户服务
  8. Xcode 4.2 中的Automatic Reference Counting (ARC) (转)
  9. 【C++】C++中你不了解的类型转换
  10. [导入]2008李幼斌电视剧力作《我是太阳》全42集
  11. 【Pyecharts50例】GEO航线图/lines
  12. DAY1——sql 建表/插入数据
  13. 国内三大云数据库测试对比
  14. Cisco Packet Tracer 思科交换机模拟器常见命令
  15. 高仿QQ游戏大厅-支持换肤和控件切换动画
  16. EXCEL身份证号码校验以及提取基本信息
  17. MATLAB泰勒展开lnx,lnx泰勒展开公式形式,lnx泰勒展开式怎么展开,sinx泰勒展开
  18. 数据库的三级封锁协议
  19. C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例
  20. 【手机】手机选购指南

热门文章

  1. 微信员工会“偷看”用户聊天记录?张小龙万字回应来了!
  2. 蓝牙传输文件,如何知道进度和传输完成
  3. 搭建nextcloud私有云盘
  4. 手动证书管理与自动证书管理
  5. KeyManager 一站式证书申请和证书秘钥管理
  6. s1200 博图高速脉冲计数值没有变化_1200伺服走不准,求解?-专业自动化论坛-中国工控网论坛...
  7. 使用U盘安装操作系统-简单教程
  8. vijos P1571 笨笨的导弹攻击
  9. 单片机实例4——广告灯的左移右移(硬件电路图+汇编程序+C语言程序)
  10. 度量学习 (Metric Learning) 解读