Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@0:d2b63af6bf3b, 2020-05-16 (annotated)
- Committer:
- sasakisho
- Date:
- Sat May 16 05:44:18 2020 +0000
- Revision:
- 0:d2b63af6bf3b
GMS-CR6 Version0
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sasakisho | 0:d2b63af6bf3b | 1 | /* GMS6-CR6の流すデータからフォーマットGPGGAのみを取得して,PCに出力 */ |
| sasakisho | 0:d2b63af6bf3b | 2 | |
| sasakisho | 0:d2b63af6bf3b | 3 | #include "mbed.h" |
| sasakisho | 0:d2b63af6bf3b | 4 | #include "math.h" |
| sasakisho | 0:d2b63af6bf3b | 5 | |
| sasakisho | 0:d2b63af6bf3b | 6 | #define TIME_GAP 6.0 |
| sasakisho | 0:d2b63af6bf3b | 7 | |
| sasakisho | 0:d2b63af6bf3b | 8 | Serial gps (p9, p10); //GPSのピンを設定 |
| sasakisho | 0:d2b63af6bf3b | 9 | Serial pc (USBTX, USBRX); |
| sasakisho | 0:d2b63af6bf3b | 10 | |
| sasakisho | 0:d2b63af6bf3b | 11 | /* mbedにあるなにかの関数らしい */ |
| sasakisho | 0:d2b63af6bf3b | 12 | Timer timer_open; |
| sasakisho | 0:d2b63af6bf3b | 13 | Timer timer_log; |
| sasakisho | 0:d2b63af6bf3b | 14 | Ticker tic_open; |
| sasakisho | 0:d2b63af6bf3b | 15 | Ticker tic_log; |
| sasakisho | 0:d2b63af6bf3b | 16 | |
| sasakisho | 0:d2b63af6bf3b | 17 | /* プロタイプ宣言 */ |
| sasakisho | 0:d2b63af6bf3b | 18 | float _DMS2DEG(float raw_data); |
| sasakisho | 0:d2b63af6bf3b | 19 | int _input(char cha); |
| sasakisho | 0:d2b63af6bf3b | 20 | |
| sasakisho | 0:d2b63af6bf3b | 21 | /* グローバル変数の設定 */ |
| sasakisho | 0:d2b63af6bf3b | 22 | float Time; |
| sasakisho | 0:d2b63af6bf3b | 23 | char gps_data[256]; |
| sasakisho | 0:d2b63af6bf3b | 24 | int cnt_gps; |
| sasakisho | 0:d2b63af6bf3b | 25 | int Cnt_GPS = 0; |
| sasakisho | 0:d2b63af6bf3b | 26 | |
| sasakisho | 0:d2b63af6bf3b | 27 | int main() |
| sasakisho | 0:d2b63af6bf3b | 28 | { |
| sasakisho | 0:d2b63af6bf3b | 29 | while(1) |
| sasakisho | 0:d2b63af6bf3b | 30 | { |
| sasakisho | 0:d2b63af6bf3b | 31 | if(gps.readable()) |
| sasakisho | 0:d2b63af6bf3b | 32 | { |
| sasakisho | 0:d2b63af6bf3b | 33 | gps_data[cnt_gps] = gps.getc(); |
| sasakisho | 0:d2b63af6bf3b | 34 | |
| sasakisho | 0:d2b63af6bf3b | 35 | if(gps_data[cnt_gps] == '$' || cnt_gps == 256) |
| sasakisho | 0:d2b63af6bf3b | 36 | { |
| sasakisho | 0:d2b63af6bf3b | 37 | cnt_gps = 0; |
| sasakisho | 0:d2b63af6bf3b | 38 | memset(gps_data, '\0', 256); //この関数なんや |
| sasakisho | 0:d2b63af6bf3b | 39 | } |
| sasakisho | 0:d2b63af6bf3b | 40 | else if(gps_data[cnt_gps] == '\r') |
| sasakisho | 0:d2b63af6bf3b | 41 | { |
| sasakisho | 0:d2b63af6bf3b | 42 | float world_time, lon_east, lat_north; |
| sasakisho | 0:d2b63af6bf3b | 43 | int rlock, sat_num; |
| sasakisho | 0:d2b63af6bf3b | 44 | char lat, lon; |
| sasakisho | 0:d2b63af6bf3b | 45 | |
| sasakisho | 0:d2b63af6bf3b | 46 | if(sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d", &world_time, &lat_north, &lat, &lon_east, &lon, &rlock, &sat_num) >= 1) |
| sasakisho | 0:d2b63af6bf3b | 47 | { |
| sasakisho | 0:d2b63af6bf3b | 48 | if (rlock == 1) |
| sasakisho | 0:d2b63af6bf3b | 49 | { |
| sasakisho | 0:d2b63af6bf3b | 50 | lat_north = _DMS2DEG(lat_north); |
| sasakisho | 0:d2b63af6bf3b | 51 | lon_east = _DMS2DEG(lon_east); |
| sasakisho | 0:d2b63af6bf3b | 52 | printf("%s \r\n", gps_data); |
| sasakisho | 0:d2b63af6bf3b | 53 | printf("Lat:%f, Lon:%f \r\n time:%f,sat_num:%d\r\n", lat_north, lon_east, sat_num); |
| sasakisho | 0:d2b63af6bf3b | 54 | } |
| sasakisho | 0:d2b63af6bf3b | 55 | else |
| sasakisho | 0:d2b63af6bf3b | 56 | { |
| sasakisho | 0:d2b63af6bf3b | 57 | printf("%s \r\n", gps_data); |
| sasakisho | 0:d2b63af6bf3b | 58 | } |
| sasakisho | 0:d2b63af6bf3b | 59 | } |
| sasakisho | 0:d2b63af6bf3b | 60 | } |
| sasakisho | 0:d2b63af6bf3b | 61 | else |
| sasakisho | 0:d2b63af6bf3b | 62 | { |
| sasakisho | 0:d2b63af6bf3b | 63 | cnt_gps++; |
| sasakisho | 0:d2b63af6bf3b | 64 | } |
| sasakisho | 0:d2b63af6bf3b | 65 | } |
| sasakisho | 0:d2b63af6bf3b | 66 | if(timer_log.read() >= 30.0*60.0) timer_log.reset(); |
| sasakisho | 0:d2b63af6bf3b | 67 | } |
| sasakisho | 0:d2b63af6bf3b | 68 | } |
| sasakisho | 0:d2b63af6bf3b | 69 | |
| sasakisho | 0:d2b63af6bf3b | 70 | float _DMS2DEG(float raw_data) |
| sasakisho | 0:d2b63af6bf3b | 71 | { |
| sasakisho | 0:d2b63af6bf3b | 72 | int d = (int)(raw_data/100); |
| sasakisho | 0:d2b63af6bf3b | 73 | float m = (raw_data - (float)d * 100); |
| sasakisho | 0:d2b63af6bf3b | 74 | return (float) d + m /60; |
| sasakisho | 0:d2b63af6bf3b | 75 | } |