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