利用linux串口读取gps数据

1。相关概念



1.gps(全球定位系统):全球卫星定位系统



美国的24颗卫星不断地向地面发送GPS信号。只要有GPS接收装置,它就可以定位你的位置的高度和速度。它与电子地图的结合通常称为GPS功能。



两。连接方式



1。串口:计算机通常通过串口读取GPS数据(蓝牙GPS也使用虚拟串口)。



2。步:



1)普通串口设备



打开串口串口设置> > > > >串行读数据恢复关闭串口



2)蓝牙设备



打开与GPS相连的蓝牙设备> >打开串口读取数据,用GPS断开蓝牙关闭串口设备。



3)注意



连接GPS蓝牙设备,如果你需要连接密码,设置为0000(蓝牙默认密码)



使用蓝牙GPS设备一般不需要设置串口。



三,GPS数据格式



1。从串口读取文本数据,每次读一行。一般来说,一秒钟可以接收多行数据。



2。有效的数据从GP美元,其中分为$GPGGA,gpgsa美元美元美元,gpgsv gprmchellip。



3、$GPGGA是GPS定位的主要数据。通过分析,我们得到了经度、纬度、高度、时间和卫星使用等基本信息,每一个都用逗号隔开,总共有十四个逗号。



$GPGGA,064746.0004925.4895,N,103.9255,E,1,05,2.1,68米,47.1米,0000×4f,



$GPGGA(句子识别头)、64746(UTC),4925.4895(纬度)、N(纬度半球),103.9255(经度),E(经度半球),1(定位质量指标)、05(卫星数)、2.1(准确度),68(高海拔(米度)。身高47.1(单位),大地水准面高度(高度)、M(单位),差分GPS数据(0000期)、差分基准站标签)* 4f(验证)(结束标记符)



四、常规



1。功能描述



假定蓝牙模块已成功连接到GPS和虚拟串口设备的蓝牙是ttyb2



从蓝牙设备连接读取100个数据,并显示解析(经度纬度/高度/卫星号)。



2。代码



#包括



#包括



#包括



#包括



#包括



#包括



Void parseData (char *buf)



{



int RET,NQ、NN、NB、NC;



炭CX,CY,CM1,CM2;



浮动时间,FX,FY,FP,FH,FB,FD;



如果(buf = null)



返回;



ret = sscanf(BUF,



$GPGGA,%,%,%,%,%,%,% % % 02d,F,F,C,F F %,%



时间、外汇、CX、FY,CY,NQ,NN,FP,FH,CM1,FB,



平方厘米,FD,NB,NC);



printf(X:% % % %,F,Y:C F,H为F,卫星:% DN



CX,外汇,赛扬,财政年度,FH,NN);



}



int main(int argc、argv char *)



{



Int FD,我,RET;



中字符{ 1024 } =



$GPGGA,064746.0004925.4895,N,103.99255,E,1,05,2.1,68,m,m,0000×4frn,47.1,; / /这里分配测试



如果((FD =开(/ dev / ttyb2,o_rdwr))= = 1)



返回- 1;



设置: / / tcsetattr FD…直接连接串口设备需要在这个设置波特率



对于(i = 0;i < 100;i +)



{



ret =读(fd,buf,1024);



如果(1)



{



如果(strstr(buf,GPGGA )!= null)



parsedata(BUF);



}



}



恢复: / / tcsetattr FD…直接连接的串口设备需要恢复波特率



近距离(FD);



}