NMEA0813フォーマットのGPSから情報を取り出すプログラムです。

Dependents:   GPS_test EM_Logger

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