GPS_test

Dependencies:   SDFileSystem mbed

main.cpp

Committer:
Joeatsumi
Date:
2018-01-16
Revision:
0:8c3382ecf351

File content as of revision 0:8c3382ecf351:


//GPS GT-720F Logger01

#include "mbed.h"
#include "SDFileSystem.h"
#define ON 1
#define OFF 0

DigitalOut mled0(LED1);
DigitalOut mled1(LED2);
DigitalIn sw1(p5);

SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
FILE *fp;//ポインタ指定

Serial gps(p9,p10); 

Ticker flipper;

float g_hokui,g_tokei;
int fp_count=0;

void gps_rec() {
   
   fp = fopen("/sd/nmea.csv", "w");
        if(fp == NULL) {
        error("Could not open file for write\n");
        }
    fprintf(fp,"%4.6f,%3.6f,\n",g_tokei,g_hokui);
     fclose(fp);                        
}

int main() {
    

      char c;
      int i,rlock=0,stn=0;
      char gps_data[256];
      char ns,ew;
      float time,hokui,tokei;
 
      float d_hokui,m_hokui,d_tokei,m_tokei;
      int h_time=0,m_time=0,s_time=0;
      int rec_flag=0;
      
      gps.baud(9600);//GT-720Fボーレート
      
 
      
    while (1) {
            
      i=0;
      while(gps.getc()!='$'){
      }
      
      while( (gps_data[i]=gps.getc()) != '\r'){
        i++;
        if(i==256){//上限文字数250文字
           i=255;
           break;
         }
      }
      gps_data[i]='\0';
      
      //test
      /* Test data
       rlock=1;
       stn=3;
       hokui=3532.25024; //=>35.537502
       tokei=13751.86820;//=>137.864471
       time=114107.046;
      */  
      
      //正常に作動
      //GPGGAセンテンスを見つける
      if( sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d",&time,&hokui,&ns,&tokei,&ew,&rlock,&stn) >= 1){
        if(rlock >= 1){//衛星ロック、緯度経度計測開始

        //hokui 北緯の処理
        
          d_hokui=int(hokui/100);
          m_hokui=(hokui-d_hokui*100)/60;
          g_hokui=d_hokui+m_hokui;
         //tokei 東経の処理
         
          d_tokei=int(tokei/100);
          m_tokei=(tokei-d_tokei*100)/60;
          g_tokei=d_tokei+m_tokei;
         //g_hokui=int(hokui/100)+(hokui-int(hokui/100))/60;
         //g_tokei=int(tokei/100)+(tokei-int(tokei/100))/60;
          
         //time set
          h_time=int(time/10000);
          m_time=int((time-h_time*10000)/100);
          s_time=int(time-h_time*10000-m_time*100);
          h_time=h_time+9;//UTC =>JST
          
     
           flipper.attach(&gps_rec, 1.0);//ロギング割り込み開始
           
        }//if(rclock>1)

        }//if sscanf
    }//while
}//main