コウスケ スズキ
/
20220803GPS
mbed-GPS(nucleo)
main.cpp@0:01188f8d5d7c, 22 months ago (annotated)
- Committer:
- kosukesuzuki
- Date:
- Wed Aug 03 09:15:06 2022 +0000
- Revision:
- 0:01188f8d5d7c
mbed-GPS(nucleo);
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kosukesuzuki | 0:01188f8d5d7c | 1 | #include "mbed.h" |
kosukesuzuki | 0:01188f8d5d7c | 2 | |
kosukesuzuki | 0:01188f8d5d7c | 3 | #include "math.h" |
kosukesuzuki | 0:01188f8d5d7c | 4 | |
kosukesuzuki | 0:01188f8d5d7c | 5 | #define TIME_GAP 6.0 |
kosukesuzuki | 0:01188f8d5d7c | 6 | |
kosukesuzuki | 0:01188f8d5d7c | 7 | Serial gps(PA_9,PA_10); |
kosukesuzuki | 0:01188f8d5d7c | 8 | |
kosukesuzuki | 0:01188f8d5d7c | 9 | Timer timer_open; |
kosukesuzuki | 0:01188f8d5d7c | 10 | Timer timer_log; |
kosukesuzuki | 0:01188f8d5d7c | 11 | Ticker tic_open; |
kosukesuzuki | 0:01188f8d5d7c | 12 | Ticker tic_log; |
kosukesuzuki | 0:01188f8d5d7c | 13 | |
kosukesuzuki | 0:01188f8d5d7c | 14 | float _DMS2DEG(float raw_data); |
kosukesuzuki | 0:01188f8d5d7c | 15 | int _imput(char cha); |
kosukesuzuki | 0:01188f8d5d7c | 16 | |
kosukesuzuki | 0:01188f8d5d7c | 17 | float Time; |
kosukesuzuki | 0:01188f8d5d7c | 18 | char gps_data[256]; |
kosukesuzuki | 0:01188f8d5d7c | 19 | int cnt_gps; |
kosukesuzuki | 0:01188f8d5d7c | 20 | int Cnt_GPS=0; |
kosukesuzuki | 0:01188f8d5d7c | 21 | |
kosukesuzuki | 0:01188f8d5d7c | 22 | int main(){ |
kosukesuzuki | 0:01188f8d5d7c | 23 | while(1){ |
kosukesuzuki | 0:01188f8d5d7c | 24 | if(gps.readable()){ |
kosukesuzuki | 0:01188f8d5d7c | 25 | gps_data[cnt_gps]=gps.getc(); |
kosukesuzuki | 0:01188f8d5d7c | 26 | if(gps_data[cnt_gps]=='$' || cnt_gps==256){ |
kosukesuzuki | 0:01188f8d5d7c | 27 | cnt_gps=0; |
kosukesuzuki | 0:01188f8d5d7c | 28 | memset(gps_data,'\0',256); |
kosukesuzuki | 0:01188f8d5d7c | 29 | }else if (gps_data[cnt_gps]=='\r'){ |
kosukesuzuki | 0:01188f8d5d7c | 30 | float world_time, lon_east, lat_north; |
kosukesuzuki | 0:01188f8d5d7c | 31 | int rlock, sat_num; |
kosukesuzuki | 0:01188f8d5d7c | 32 | char lat,lon; |
kosukesuzuki | 0:01188f8d5d7c | 33 | if(sscanf(gps_data, |
kosukesuzuki | 0:01188f8d5d7c | 34 | "GPGGA,%f,%f,%c,%f,%c,%d,%d" |
kosukesuzuki | 0:01188f8d5d7c | 35 | ,&world_time,&lat_north,&lat, |
kosukesuzuki | 0:01188f8d5d7c | 36 | &lon_east,&lon, |
kosukesuzuki | 0:01188f8d5d7c | 37 | &rlock,&sat_num)>=1){ |
kosukesuzuki | 0:01188f8d5d7c | 38 | if(rlock==1){ |
kosukesuzuki | 0:01188f8d5d7c | 39 | lat_north=_DMS2DEG(lat_north); |
kosukesuzuki | 0:01188f8d5d7c | 40 | lon_east=_DMS2DEG(lon_east); |
kosukesuzuki | 0:01188f8d5d7c | 41 | printf("Lat:%f,Lon:%f\r\ntime:%f,sat_num:%d\r\n", |
kosukesuzuki | 0:01188f8d5d7c | 42 | lat_north,lon_east,world_time,sat_num); |
kosukesuzuki | 0:01188f8d5d7c | 43 | }else{ |
kosukesuzuki | 0:01188f8d5d7c | 44 | printf("%s\r\n",gps_data); |
kosukesuzuki | 0:01188f8d5d7c | 45 | } |
kosukesuzuki | 0:01188f8d5d7c | 46 | } |
kosukesuzuki | 0:01188f8d5d7c | 47 | }else{ |
kosukesuzuki | 0:01188f8d5d7c | 48 | cnt_gps++; |
kosukesuzuki | 0:01188f8d5d7c | 49 | } |
kosukesuzuki | 0:01188f8d5d7c | 50 | } |
kosukesuzuki | 0:01188f8d5d7c | 51 | if(timer_log.read()>=30.0*60.0)timer_log.reset(); |
kosukesuzuki | 0:01188f8d5d7c | 52 | } |
kosukesuzuki | 0:01188f8d5d7c | 53 | } |
kosukesuzuki | 0:01188f8d5d7c | 54 | float _DMS2DEG(float raw_data){ |
kosukesuzuki | 0:01188f8d5d7c | 55 | int d=(int)(raw_data/100); |
kosukesuzuki | 0:01188f8d5d7c | 56 | float m=(raw_data-(float)d*100); |
kosukesuzuki | 0:01188f8d5d7c | 57 | return (float)d+m/60; |
kosukesuzuki | 0:01188f8d5d7c | 58 | } |
kosukesuzuki | 0:01188f8d5d7c | 59 | |
kosukesuzuki | 0:01188f8d5d7c | 60 | |
kosukesuzuki | 0:01188f8d5d7c | 61 | |
kosukesuzuki | 0:01188f8d5d7c | 62 | |
kosukesuzuki | 0:01188f8d5d7c | 63 | |
kosukesuzuki | 0:01188f8d5d7c | 64 | |
kosukesuzuki | 0:01188f8d5d7c | 65 | |
kosukesuzuki | 0:01188f8d5d7c | 66 |