GPS导航模块数据的监听
来源:互联网 发布:美工是干嘛的 编辑:程序博客网 时间:2024/06/09 14:42
GPS是英文Global Positioning System(全球定位系统)的简称。 利用GPS定位卫星,在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统。GPS可以提供车辆定位、放到、反劫、行驶路线监控及呼叫等功能。要实现以上所有功能必须具备GPS终端、传输网络和监控平台三个要素。
我用得是深圳市伟辉创科技有限公司生产的GPS模块SF2820,iRF starⅢ高性能GPS 芯片组、极佳的灵敏度(追踪感度-159dBm)、在讯号微弱时,TTFF (Time To First Fix)定位仍十分迅速 、支NMEA 0183 and SiRF binary 协定。监听前,先用串口将GPS模块和ARM开发板连接起来(可自己制作串口线,只需要发送、接收和地线三根线就可以了),将GPS天线连在GPS模块上,再将另一端放在室外接受数据,然后在板子上操作串口就可以了。具体步骤如下:
1、在开发板上用microcom命令监听:
我是将GPS模块连接在ttyS1这个串口,可以用microcom 命令打开串口设备,注意GPS模块的波特率是4800 如果波特率设置不对输出会出现乱码,按Ctrl-X退出:
[root@root /]# microcom -t 5000 -s 4800 dev/ttyS1
$GPGGA,041501.000,3029.6498,N,11423.6155,E,1,09,1.1,73.1,M,-13.7,M,,0000*40
$GPGSA,A,3,07,08,04,30,17,20,01,28,11,,,,2.5,1.1,2.3*33
$GPRMC,041501.000,A,3029.6498,N,11423.6155,E,0.28,302.18,040914,,,A*6C
$GPGGA,041502.000,3029.6499,N,11423.6154,E,1,09,1.1,72.6,M,-13.7,M,,0000*45
$GPGSA,A,3,07,08,04,30,17,20,01,28,11,,,,2.5,1.1,2.3*33
$GPRMC,041502.000,A,3029.6499,N,11423.6154,E,0.15,289.64,040914,,,A*68
$GPGGA,041503.000,3029.6500,N,11423.6154,E,1,09,1.1,72.5,M,-13.7,M,,0000*46
$GPGSA,A,3,07,08,04,30,17,20,01,28,11,,,,2.5,1.1,2.3*33
$GPRMC,041503.000,A,3029.6500,N,11423.6154,E,0.16,238.44,040914,,,A*63
$GPGGA,041504.000,3029.6501,N,11423.6154,E,1,09,1.1,72.2,M,-13.7,M,,0000*47
$GPGSA,A,3,07,08,04,30,17,20,01,28,11,,,,2.5,1.1,2.3*33
$GPGSV,3,1,12,04,72,207,39,01,68,049,24,28,53,332,18,30,52,230,43*77
$GPGSV,3,2,12,11,46,043,26,08,33,184,37,07,33,192,39,17,32,284,23*74
······
以上就是接受到的GPS数据。
2、编写用户程序监听:
[root@root /]# ./gps_test
GPS DATALen=412
GPS information as follow:
$GPGGA,054432.000,3029.6523,N,11423.6208,E,1,09,1.2,70.4,M,-13.7,M,,0000*4A
$GPGSA,A,3,17,28,20,30,32,04,01,10,06,,,,1.9,1.2,1.4*32
$GPRMC,054432.000,A,3029.6523,N,11423.6208,E,0.16,184.84,040914,,,A*67
$GPGGA,054433.000,3029.6520,N,11423.6205,E,1,09,1.2,72.3,M,-13.7,M,,0000*40
$GPGSA,A,3,17,28,20,30,32,04,01,10,06,,,,1.9,1.2,1.4*32
$GPRMC,054433.000,A,3029.6520,N,11423.6205,E,0.15,133.60,040914,,,A*6D
GPS DATALen=614
GPS information as follow:
$GPGGA,054434.000,3029.6517,N,11423.6204,E,1,09,1.2,74.0,M,-13.7,M,,0000*47
$GPGSA,A,3,17,28,20,30,32,04,01,10,06,,,,1.9,1.2,1.4*32
$GPGSV,3,1,12,28,84,153,26,04,62,025,24,17,51,331,25,20,49,087,23*79
$GPGSV,3,2,12,06,35,244,39,01,29,042,16,32,18,049,17,30,17,198,35*78
$GPGSV,3,3,12,11,13,058,,10,05,193,33,02,03,237,,24,00,321,*7B
$GPRMC,054434.000,A,3029.6517,N,11423.6204,E,0.44,84.29,040914,,,A*5B
$GPGGA,054435.000,3029.6520,N,11423.6210,E,1,09,1.2,73.7,M,-13.7,M,,0000*47
$GPGSA,A,3,17,28,20,30,32,04,01,10,06,,,,1.9,1.2,1.4*32
$GPRMC,054435.000,A,3029.6520,N,11423.6210,E,0.81,89.54,040914,,,A*55
^C
[root@root /]#
以上是监听的数据。以下是具体代码:
/*********************************************************************************
* Copyright: (C) 2014 liucehngdeng<1037398771@qq.com>
* All rights reserved.
*
* Filename: gps_test.c
* Description: This file
*
* Version: 0.0.0(09/04/2014~)
* Author: liu chengdeng <1037398771@qq.com>
* ChangeLog: 1, Release initial version on "09/04/2014 11:05:23 AM"
*
********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<termios.h>
#include<string.h>
int open_dev(char *dev)
{
int fd = open( dev, O_RDWR ); //| O_NOCTTY | O_NDELAY
if (-1 == fd)
{
perror("Can't Open Serial Port !");
return -1;
}
else
return fd;
}
int init_serial(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio,oldtio;
if ( tcgetattr( fd,&oldtio) != 0) {
perror("SetupSerial 1");
return -1;
}
bzero( &newtio, sizeof( newtio ) );
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
switch( nBits )
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}
switch( nEvent )
{
case 'O':
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case 'E':
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case 'N':
newtio.c_cflag &= ~PARENB;
break;
}
switch( nSpeed )
{
case 2400:
cfsetispeed(&newtio, B2400);
cfsetospeed(&newtio, B2400);
break;
case 4800:
cfsetispeed(&newtio, B4800);
cfsetospeed(&newtio, B4800);
break;
case 9600:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
case 115200:
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);
break;
case 460800:
cfsetispeed(&newtio, B460800);
cfsetospeed(&newtio, B460800);
break;
default:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
}
if( nStop == 1 )
newtio.c_cflag &= ~CSTOPB;
else if ( nStop == 2 )
newtio.c_cflag |= CSTOPB;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 100;
tcflush(fd,TCIFLUSH);
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
perror("com set error");
return -1;
}
return 0;
}
int main(void)
{
int fd;
int nset1,nread;
char buf[1024];
fd = open_dev("/dev/ttyS1");
nset1 = init_serial(fd,4800, 8, 'N', 1);
if (nset1 == -1)
exit(1);
while(1)
{
sleep(2);
memset(buf,0,1024);
nread = read(fd, buf, 1024);
if (nread > 0)
{
printf("\nGPS DATALen=%d\n",nread);
buf[nread] = '\0';
printf( "GPS information as follow:\n%s\n", buf);
}
}
close(fd);
return 0;
}
- GPS导航模块数据的监听
- 基于STM32和GPS-NEO-6M模块实现GPS导航定位的
- gps 模块及导航测试案例网址
- S3C2440 GPS全球导航模块SF2820实现
- GPS模块数据分析 -- linux
- GPS 定位模块数据提取
- 设置GPS模块ublox 的波特率和数据输出格式
- android 监听GPS、蓝牙、数据漫游
- GPS导航
- gps各个模块的解析
- 移植quectel的GPS模块
- GPS模块URAT输出数据协议NMEA
- 简单的短信监听GPS信息
- GPS导航服务的视野应该放远些
- GPS导航服务的视野应该放远些
- GPS导航服务的视野应该放远些
- GPS导航服务的视野应该放远些
- GPS导航服务的视野应该放远些
- 《穆斯林的葬礼》读后感
- 突破上下文约束的泛型迁移计算模型
- C++ Primer学习笔记- 第三章:标准库类型之二
- poj2769
- notifyDataSetChanged() 动态更新ListView
- GPS导航模块数据的监听
- POI实现Excel插入图片
- 字符转为Unicode编码的小方法
- POJ 3680 Intervals(离散化+费用流)
- python网络爬虫学习笔记
- 自动调整linux系统时间和时区与Internet时间同步
- 单链表—练习
- Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'
- eclipse注释的设置和部分模板