利用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);
}