GPS协议的解析---C#

来源:互联网 发布:linux命令全集app 编辑:程序博客网 时间:2024/06/13 00:28

  因为我的工作与GPS,相关,实习期间的项目可以会与GPS的协议相关,所以先自己去看了一下

 GPS 有很多种协议,如GSA,GGA .......在这里我不一一列举 在这里我用其中的一种来展示一下 怎么样进行协议解析,用一个字符串截取函数就可以了

下面是一个条模拟数据

 string sTarget = "$GPGGA,134658.00,5106.9792,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,08,AAAA*60";

进行解析

////将卫星信息(根据逗号)进行分段截取

      (下面这个函数最重要 String.Split(new char[] {}) ,用字符','作为分隔符,来截取字符串,后面的'*' 来代指内容,这个你们可以自己试一下,很实用)
            string[] dataSplit = sTarget.Split(new char[] { ',', '*' });
            this.textBox1.Text = dataSplit[0];
            ///每一段所对应的信息
            ///0 表示协议名称 GPGGA
            ///1 UTC时间 hhmmss 134658 13:46:58
            ////将134658变为13:46:58
            string sTimeHour = dataSplit[1].Substring(0, 2);
            string sTimeMinute = dataSplit[1].Substring(2, 2);
            string sTimeSecond = dataSplit[1].Substring(4, 2);
            String sTime;
            sTime=sTimeHour+":"+sTimeMinute+":"+sTimeSecond;
            this.textBox2.Text = sTime;
            ////2 表示纬度 3 表示是南纬还是北纬
            string sLatitude = dataSplit[2].Substring(0, 2)+":"+
                dataSplit[2].Substring(2,2)+":"+dataSplit[2].Substring(5,4)+
                dataSplit[3];
            this.textBox3.Text = sLatitude;
            ////4 表示经度 5 表示是东经还是西经
            string sLongitude=dataSplit[4].Substring(0,3)+":"+
                  dataSplit[4].Substring(3,2)+":"+dataSplit[4].Substring(6,4)+dataSplit[5];
            this.textBox4.Text=sLongitude;
            ////6 定位质量标识
            this.textBox5.Text = dataSplit[6];
            ////7 表示使用卫星数量 不足10个会在前面加上0 因此在显示的时候应该去掉
            if (dataSplit[7].IndexOf('0') == -1)//表示大于10
            {
                this.textBox6.Text = dataSplit[7];
            }
            else//表示小于10
            {
                this.textBox6.Text = dataSplit[7].Substring(1, 1);
            }
            ////8 水平精度因子
            this.textBox7.Text = dataSplit[8];
            ////9 海平面高度  10表示单位M
            this.textBox8.Text = dataSplit[9]+dataSplit[10];
            ////11 大地椭球面相对海平面高度 12表示单位M
            this.textBox9.Text = dataSplit[11] + dataSplit[12];