修正済みby皆川
Dependencies: mbed Servo cansat_integrated_2 BMP180
Dependents: cansat_integrated_2
Diff: getGPS.cpp
- Revision:
- 13:c482c4d7a585
- Parent:
- 12:79946f960100
diff -r 79946f960100 -r c482c4d7a585 getGPS.cpp --- a/getGPS.cpp Fri Nov 05 15:41:24 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -#include "mbed.h" -#include "getGPS.h" - -GPS::GPS(PinName gpstx,PinName gpsrx): _gps(gpstx,gpsrx) -{ - latitude = 0; - longitude = 0; - _gps.baud(GPSBAUD); - _gps.printf("$PMTK314,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29"); -} - -bool GPS::getgps() -{ - char gps_data[256]; - int i; - - do { - while(_gps.getc() != '$'); //$マークまで読み飛ばし - i = 0; - - /* gpa_data初期化 */ - for(int j = 0; j < 256; j++) - gps_data[j] = '\0'; - - /* NMEAから一行読み込み */ - while((gps_data[i] = _gps.getc()) != '\r') { - i++; - if(i == 256) { - i = 255; - break; - } - } - } while(strstr(gps_data, "GPGGA") == NULL); //GGAセンテンスまで一行ずつ読み込み続ける - - int rlock; - char ns,ew; - double w_time, raw_longitude, raw_latitude; - int satnum; - double hdop; - - if(sscanf(gps_data, "GPGGA, %lf, %lf, %c, %lf, %c, %d, %d, %lf", &w_time, &raw_latitude, &ns, &raw_longitude, &ew, &rlock, &satnum, &hdop) > 1) { - /* 座標1(度部分) */ - int latitude_dd = (int)(raw_latitude / 100); - int longitude_dd = (int)(raw_longitude / 100); - - /* 座標2(分部分 → 度) */ - double latitude_md = (raw_latitude - latitude_dd * 100) / 60; - double longitude_md = (raw_longitude - longitude_dd * 100) / 60; - - /* 座標1 + 2 */ - latitude = latitude_dd + latitude_md; - longitude = longitude_dd + longitude_md; - - return true; - } else - return false; //GGAセンテンスの情報が欠けている時 -}