NMEA0813フォーマットのGPSから情報を取り出すプログラムです。
Dependents: GPS_test EM_Logger
Diff: nmea0813.cpp
- Revision:
- 2:7870c69fa58c
- Parent:
- 0:42a334c405de
- Child:
- 3:84d63345eb80
- Child:
- 4:7be9581d0734
--- a/nmea0813.cpp Fri Mar 29 05:55:53 2013 +0000 +++ b/nmea0813.cpp Fri Jul 05 04:17:36 2013 +0000 @@ -1,9 +1,6 @@ #include "nmea0813.h" GPS::GPS(PinName tx,PinName rx) : Serial(tx,rx){ - //time_str[8] = {'0','0',':','0','0',':','0','0'}; - //latitude_str[9] = {'0','0','0','0','.','0','0','0','0'}; - //longitude_str[10]= {'0','0','0','0','0','.','0','0','0','0'}; flg = 0; count = 0; attach(this, &GPS::rxHandler,Serial::RxIrq); @@ -71,21 +68,19 @@ } void GPS::get_infomation(char* gga,char* rmc){ - if(gga[8]=='0'){ - time_str[0]=gga[7]; - time_str[1]=gga[8]+0x09; - }else{ - time_str[0]=gga[7]+0x01; - time_str[1]=gga[8]-0x01; - } + time_str[0]=gga[7]; + time_str[1]=gga[8]; time_str[2]=':'; time_str[3]=gga[9]; time_str[4]=gga[10]; time_str[5]=':'; time_str[6]=gga[11]; time_str[7]=gga[12]; + //time_str[8]='\n'; - states = rmc[18]; + status = rmc[18]; + + number_of_satelite = gga[46]; for(int i=0;i<9;i++){ latitude_str[i]=gga[18+i]; @@ -96,10 +91,13 @@ for(int i=0;i<5;i++){ speed_str[i]=rmc[51+i]; } - speed = (float)(speed_str[0]-0x30)*100.0+\ - (float)(speed_str[1]-0x30)*10.0+\ - (float)(speed_str[2]-0x30)*1.0+\ - (float)(speed_str[4]-0x30)*0.1; +} + +char* GPS::get_time(){ + return time_str; +} + +float GPS::get_latitude(){ latitude = (float)(latitude_str[0]-0x30)*10.0+ \ (float)(latitude_str[1]-0x30)+ \ ((float)(latitude_str[2]-0x30)*10.0+ \ @@ -108,6 +106,14 @@ (float)(latitude_str[6]-0x30)*0.01+ \ (float)(latitude_str[7]-0x30)*0.001+ \ (float)(latitude_str[8]-0x30)*0.0001)/60.0; + return latitude; +} + +char* GPS::get_str_latitude(){ + return latitude_str; +} + +float GPS::get_longitude(){ longitude = (float)(longitude_str[0]-0x30)*100.0+ \ (float)(longitude_str[1]-0x30)*10.0+ \ (float)(longitude_str[2]-0x30)+ \ @@ -117,21 +123,6 @@ (float)(longitude_str[7]-0x30)*0.01+ \ (float)(longitude_str[8]-0x30)*0.001+ \ (float)(longitude_str[9]-0x30)*0.0001)/60.0; -} - -char* GPS::get_time(){ - return time_str; -} - -float GPS::get_latitude(){ - return latitude; -} - -char* GPS::get_str_latitude(){ - return latitude_str; -} - -float GPS::get_longitude(){ return longitude; } @@ -139,10 +130,18 @@ return longitude_str; } -char GPS::get_states(){ - return states; +char GPS::get_status(){ + return status; } float GPS::get_speed(){ + speed = (float)(speed_str[0]-0x30)*100.0+\ + (float)(speed_str[1]-0x30)*10.0+\ + (float)(speed_str[2]-0x30)*1.0+\ + (float)(speed_str[4]-0x30)*0.1; return speed; +} + +char GPS::get_satelite_number(){ + return number_of_satelite; } \ No newline at end of file