SSLM1 / Mbed 2 deprecated GMS6-CR6

Dependencies:   mbed

Committer:
sasakisho
Date:
Sat May 16 05:44:18 2020 +0000
Revision:
0:d2b63af6bf3b
GMS-CR6 Version0

Who changed what in which revision?

UserRevisionLine numberNew 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 }