SSLM1 / Mbed 2 deprecated 1_Transiver_GPS

Dependencies:   mbed

Committer:
sasakisho
Date:
Wed Jul 01 12:59:29 2020 +0000
Revision:
0:a8035d192dd3
version0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sasakisho 0:a8035d192dd3 1 /* GMS6-CR6の流すデータからフォーマットGPGGAのみを取得して,PCに出力 (ネットにあったコード)*/
sasakisho 0:a8035d192dd3 2
sasakisho 0:a8035d192dd3 3 #include "mbed.h"
sasakisho 0:a8035d192dd3 4 #include "math.h"
sasakisho 0:a8035d192dd3 5
sasakisho 0:a8035d192dd3 6 #define TIME_GAP 6.0
sasakisho 0:a8035d192dd3 7
sasakisho 0:a8035d192dd3 8 Serial gps (p9, p10); //GPSのピンを設定
sasakisho 0:a8035d192dd3 9 Serial pc (USBTX, USBRX);
sasakisho 0:a8035d192dd3 10 Serial twe (p13, p14);
sasakisho 0:a8035d192dd3 11
sasakisho 0:a8035d192dd3 12 /* 時間測定 */
sasakisho 0:a8035d192dd3 13 Timer timer_open;
sasakisho 0:a8035d192dd3 14 Timer timer_log;
sasakisho 0:a8035d192dd3 15 Ticker tic_open;
sasakisho 0:a8035d192dd3 16 Ticker tic_log;
sasakisho 0:a8035d192dd3 17
sasakisho 0:a8035d192dd3 18 /* プロタイプ宣言 */
sasakisho 0:a8035d192dd3 19 float _DMS2DEG(float raw_data);
sasakisho 0:a8035d192dd3 20 int _input(char cha);
sasakisho 0:a8035d192dd3 21
sasakisho 0:a8035d192dd3 22 /* グローバル変数の設定 */
sasakisho 0:a8035d192dd3 23 float Time;
sasakisho 0:a8035d192dd3 24 char gps_data[256];
sasakisho 0:a8035d192dd3 25 int cnt_gps;
sasakisho 0:a8035d192dd3 26 int Cnt_GPS = 0;
sasakisho 0:a8035d192dd3 27
sasakisho 0:a8035d192dd3 28 int main()
sasakisho 0:a8035d192dd3 29 {
sasakisho 0:a8035d192dd3 30 float world_time, lon_east, lat_north;
sasakisho 0:a8035d192dd3 31 int rlock, sat_num;
sasakisho 0:a8035d192dd3 32 char lat, lon;
sasakisho 0:a8035d192dd3 33
sasakisho 0:a8035d192dd3 34 pc.baud(115200);
sasakisho 0:a8035d192dd3 35 twe.baud(115200);
sasakisho 0:a8035d192dd3 36
sasakisho 0:a8035d192dd3 37 while(1)
sasakisho 0:a8035d192dd3 38 {
sasakisho 0:a8035d192dd3 39 if(gps.readable())
sasakisho 0:a8035d192dd3 40 {
sasakisho 0:a8035d192dd3 41 gps_data[cnt_gps] = gps.getc();
sasakisho 0:a8035d192dd3 42
sasakisho 0:a8035d192dd3 43 if(gps_data[cnt_gps] == '$' || cnt_gps == 256)
sasakisho 0:a8035d192dd3 44 {
sasakisho 0:a8035d192dd3 45 cnt_gps = 0;
sasakisho 0:a8035d192dd3 46 memset(gps_data, '\0', 256); //この関数なんや
sasakisho 0:a8035d192dd3 47 }
sasakisho 0:a8035d192dd3 48 else if(gps_data[cnt_gps] == '\r')
sasakisho 0:a8035d192dd3 49 {
sasakisho 0:a8035d192dd3 50 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:a8035d192dd3 51 {
sasakisho 0:a8035d192dd3 52 twe.printf("%s \r\n", gps_data);
sasakisho 0:a8035d192dd3 53 }
sasakisho 0:a8035d192dd3 54 }
sasakisho 0:a8035d192dd3 55 else
sasakisho 0:a8035d192dd3 56 {
sasakisho 0:a8035d192dd3 57 cnt_gps++;
sasakisho 0:a8035d192dd3 58 }
sasakisho 0:a8035d192dd3 59 }
sasakisho 0:a8035d192dd3 60 if(timer_log.read() >= 30.0*60.0) timer_log.reset();
sasakisho 0:a8035d192dd3 61 }
sasakisho 0:a8035d192dd3 62 }
sasakisho 0:a8035d192dd3 63
sasakisho 0:a8035d192dd3 64 float _DMS2DEG(float raw_data)
sasakisho 0:a8035d192dd3 65 {
sasakisho 0:a8035d192dd3 66 int d = (int)(raw_data/100);
sasakisho 0:a8035d192dd3 67 float m = (raw_data - (float)d * 100);
sasakisho 0:a8035d192dd3 68 return (float) d + m /60;
sasakisho 0:a8035d192dd3 69 }