mbed-GPS(nucleo)

Dependencies:   mbed

main.cpp

Committer:
kosukesuzuki
Date:
22 months ago
Revision:
0:01188f8d5d7c

File content as of revision 0:01188f8d5d7c:

#include "mbed.h"

#include "math.h"

#define TIME_GAP      6.0

Serial        gps(PA_9,PA_10);

Timer timer_open;
Timer timer_log;
Ticker tic_open;
Ticker tic_log;

float    _DMS2DEG(float raw_data);
int      _imput(char cha);

float Time;
char gps_data[256];
int cnt_gps;
int Cnt_GPS=0;

int main(){
    while(1){
        if(gps.readable()){
            gps_data[cnt_gps]=gps.getc();
            if(gps_data[cnt_gps]=='$' || cnt_gps==256){
                cnt_gps=0;
                memset(gps_data,'\0',256);
         }else if (gps_data[cnt_gps]=='\r'){
            float world_time, lon_east, lat_north;
            int rlock, sat_num;
            char lat,lon;
            if(sscanf(gps_data,
            "GPGGA,%f,%f,%c,%f,%c,%d,%d"
            ,&world_time,&lat_north,&lat,
            &lon_east,&lon,
            &rlock,&sat_num)>=1){
                if(rlock==1){
                    lat_north=_DMS2DEG(lat_north);
                    lon_east=_DMS2DEG(lon_east);
                    printf("Lat:%f,Lon:%f\r\ntime:%f,sat_num:%d\r\n",
                    lat_north,lon_east,world_time,sat_num);
                    }else{
                        printf("%s\r\n",gps_data);
                    }
            }
        }else{
              cnt_gps++;
        }
    }
    if(timer_log.read()>=30.0*60.0)timer_log.reset();
    }
    }
    float _DMS2DEG(float raw_data){
            int d=(int)(raw_data/100);
            float m=(raw_data-(float)d*100);
            return (float)d+m/60;
}