GPS协议的解析---C#

  因为我的工作与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];

     

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全套源代码,请咨询 ny_mrzhang@hotmail.com QQ:97302751 以前的协议是这样的。。。车载设备发往网络中心位置数据-80[功能] 车载设备向网络中心发送当前位置信息[去向] 网络中心[数据入库] 网络中心收到数据后将数据保存到动态位置数据表中 (DynData)[格式] 29 29 80 len1 len2 d3d2d1d0 yymmddhhmmss jjjj wwww ssff st lichen1 lichen2 lichen3 st1st2st3 st4 v1v2v3v4v5v6v7v8 len1 len2: 包长d3d2d1d0: 伪IP,终端ID号yymmddhhmmss:年月日时分秒日期表示范围:年份,后两位 ;月份,1-12;日期,1-31时间表示范围:小时,00——23;分钟,00——59;秒,00——59时、分、秒均采用压缩BCD编码。[例如]: 10点23分15秒表示为: 10H,23H,15Hjjjj:经度经度表示范围:000度00.000分——179度59.999分;采用压缩BCD编码,但最高位是符号位。“正”表示“东经”,“负”表示“西经”;“分”的单位是:千分之一分。[例如]: 西经130度45.608分表示为:(注意:1度=60分) 13H,04H,56H,08Hwwww:纬度纬度表示范围:00度00.000分——89度59.999分;采用压缩BCD编码,但最高位是符号位。“正”表示“北纬”,“负”表示“南纬”;“分”的单位是:千分之一分。[例如]: 南纬30度37.901分表示为: 3H,03H,79H,01Hssff:速度方向速度表示方法:表示范围:0——9999公里/小时采用压缩BCD编码。[例如]: 120公里/小时表示为: 01H,20H方位表示方法:表示范围:000——359度采用压缩BCD编码,正北为0度,顺时针方向计数。单位为:度。[例如]: 154度表示为: 01H,54Hst:定位,天线,电源状态定位状态由单字节组成,各位含义如下: D7 D6 D5 D4 D3 D2 D1 D0D7 定位标志0 GPS未定位1 GPS已定位D6 D5 1 1 GPS正常1 0 GPS天线短路0 1 GPS天线开路0 0 GPS天线故障D4 D3 电源状态1 1 正常1 0 主电源掉电0 1 主电源过高或过低 D2 D1 D0 保留 lichen1 lichen2 lichen3:里程数 HEX 格式:0——0XFFFFFF (0——16777215)米st1st2st3 st4:车辆状态现在协议格式:*HQ,000,S12,130305,60# 上传短信*HQ,000,S4,121212,0F,FF# 速度显示*HQ,000,S4,121212,9F,FF# 断油断电
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值