• 大小: 17KB
    文件类型: .cs
    金币: 2
    下载: 1 次
    发布日期: 2021-05-09
  • 语言: C#
  • 标签: GPS  

资源简介

完整GPS数据包解析类;GPRMC,GPGGA,GPGSV,GPGLL,GPVTG,GPGSA

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nuctech.GPS.Adapter
{
    /// 
    /// 使用说明:
    /// 1、设置本地时区
    /// 2、注册事件:OnGPSRecvAndAnalysisSuccessedEvent
    /// 3、调用(完整数据包)解析接口(可以多组传入):GPSDataParse(string gpsMsg)
    /// 【3】调用(追加方式)解析接口(可以多组传入):GPSDataParseAppend(string gpsMsg)
    /// 4、解析函数按照:GPRMC有效数据频率触发事件OnGPSRecvAndAnalysisSuccessedEvent
    /// 5、也可自行获取Gps_Info属性
    /// 

    public class GPS_Globle
    {
        #region 事件
        /// 
        /// 解析后的GPS数据
        /// 

        public static event GPSDataReadyEventHandler OnGPSRecvAndAnalysisSuccessedEvent;
        /// 
        /// 未解析的原始GPS数据
        /// 

        public static event GPSOrigionDataReadyEventHandler OnGPSOrigionDataReadyEvent;
        #endregion

        #region 私有属性
        private static string mBuffer = ““;
        private static int msgCount = 0;
        private static List dataLength = new List();
        private static List origionData = new List();
        #endregion

        #region 公有属性及对外接口
        private static GPS_Infomation _Gps_Info = new GPS_Infomation();
        /// 
        /// GPS详细信息 
        /// 

        public static GPS_Infomation Gps_Info
        {
            get { return _Gps_Info; }
            set { _Gps_Info = value; }
        }
        /// 
        /// GPS数据是否有效
        /// 只截取完整的数据包判断
        /// 

        /// 完整数据包
        /// 
        public static bool IsEffective(string msg)
        {
            bool flag_Head_OK = false;
            bool flag_End_OK = false;
            if (msg.IndexOf(“$GP“) == 0 || msg.IndexOf(“GP“) == 0)
                flag_Head_OK = true;

            string[] msgA = msg.Split(new char[] { ‘‘ });

            //if (dataLength.Contains(string.Format(“{0}={1}“ msgA[0] msgA.Length)) == false)
            //{
            //    dataLength.Add(string.Format(“{0}={1}“ msgA[0] msgA.Length));
            //    Console.WriteLine(string.Format(“{0}={1}“ msgA[0] msgA.Length));
            //}
      
            msgA[0] = msgA[0].Replace(“$“ ““);
            if (msgA[0] == “GPRMC“ && msgA[msgA.Length - 1].IndexOf(“*“) > -1)
                flag_End_OK = true;
            if (msgA[0] == “GPVTG“ && msgA[msgA.Length - 1].IndexOf(“*“) > -1)
                flag_End_OK = true;
            if (msgA[0] == “GPGGA“ && msgA[msgA.Length - 1].IndexOf(“*“) > -1)
                flag_End_OK = true;
            if (msgA[0] == “GPGSV“ && msgA[msgA.Length - 1].IndexOf(“*“) > -1)
                flag_End_OK = true;
            if (msgA[0] == “GPGSA“ && msgA[msgA.Length - 1].IndexOf(“*“) > -1)
                flag_End_OK = true;
            if (msgA[0] == “GPGLL“

评论

共有 条评论