C语言编程实现GPS定位信息的接受和显示
前面主要是在PC上操作串口,接受GPS天线传来的原始数字,下面是编程在用户层对接受到的信息进行处理和解析,有了前面的编写GPRS收发短信的经历,这次编写C程序接受和显示程序接容易多了。当然也参考和学习了网上别人的程序;
以下是实现的具体代码:
memset(buf,0,BUF_SIZE); nread = read(fd, buf, BUF_SIZE);//璇讳覆鍙? if (nread > 0) { printf(" GPS DATALen=%d ",nread); buf[nread] = ; printf( "GPS information as follow: %s ", buf); //杈撳嚭鎵€璇绘暟鎹? } buff_gprmc=get_gprmc(buf); buff_gpgga=get_gpgga(buf); gps_parse(buff_gprmc,buff_gpgga,&GPS); show_gps(&GPS) ; } close(fd); return 0; }
下面是在开发板上运行的结果:
[root@root /]# ./gps_info_test GPS DATALen=598 GPS information as follow: $GPGGA,043402.000,3029.6468,N,11423.6176,E,1,09,1.2,88.9,M,-13.7,M,,0000*41 $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPRMC,043402.000,A,3029.6468,N,11423.6176,E,0.08,134.87,060914,,,A*63 $GPGGA,043403.000,3029.6468,N,11423.6176,E,1,09,1.2,89.0,M,-13.7,M,,0000*48 $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPGSV,3,1,12,04,87,286,29,28,66,339,23,01,55,039,26,30,41,216,46*78 $GPGSV,3,2,12,17,39,298,22,20,38,126,29,11,34,046,30,32,25,076,16*75 $GPGSV,3,3,12,07,20,187,37,08,18,180,40,06,14,224,38,19,03,074,*7D $GPRMC,043403.000,A,3029.6468,N,11423.6176,E,0.15, DATE : 2014-09-06 TIME : 12:34:03 Latitude : 30.2965 N Longitude: 114.2362 E high : 88.9000 STATUS : A GPS DATALen=434 GPS information as follow: 135.18,060914,,,A*69 $GPGGA,043404.000,3029.6468,N,11423.6176,E,1,09,1.2,89.1,M,-13.7,M,,0000*4E $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPRMC,043404.000,A,3029.6468,N,11423.6176,E,0.16,149.00,060914,,,A*6F $GPGGA,043405.000,3029.6468,N,11423.6175,E,1,09,1.2,89.3,M,-13.7,M,,0000*4E $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPRMC,043405.000,A,3029.6468,N,11423.6175,E,0.05,113.40,060914,,,A*64 DATE : 2014-09-06 TIME : 12:34:05 Latitude : 30.2965 N Longitude: 114.2362 E high : 89.1000 STATUS : A GPS DATALen=412 GPS information as follow: $GPGGA,043406.000,3029.6468,N,11423.6175,E,1,09,1.2,89.3,M,-13.7,M,,0000*4D $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPRMC,043406.000,A,3029.6468,N,11423.6175,E,0.06,154.67,060914,,,A*62 $GPGGA,043407.000,3029.6467,N,11423.6175,E,1,09,1.2,89.5,M,-13.7,M,,0000*45 $GPGSA,A,3,30,07,08,04,01,06,17,11,28,,,,2.2,1.2,1.8*3B $GPRMC,043407.000,A,3029.6467,N,11423.6175,E,0.12,137.48,060914,,,A*61 DATE : 2014-09-06 TIME : 12:34:07 Latitude : 30.2965 N Longitude: 114.2362 E high : 89.3000 STATUS : A
