![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ニドキング
Diff: getGPS.cpp
- Revision:
- 5:e922c07f1b61
- Parent:
- 4:443e82b039ba
--- a/getGPS.cpp Sat Dec 19 09:24:42 2020 +0000 +++ b/getGPS.cpp Sat Dec 19 11:01:55 2020 +0000 @@ -4,30 +4,32 @@ GPS::GPS(PinName gpstx,PinName gpsrx): _gps(gpstx,gpsrx) { latitude = 0; - longitude = 0; + longitude = 0; //getGPS.hで宣言した値を初期化 _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() +bool GPS::getgps() //GPSのデータを取得する関数の中身 { char gps_data[256]; int i; do { - while(_gps.getc() != '$'); //$マークまで読み飛ばし + while(_gps.getc() != '$');//$マークまで読み飛ばし + /*送ったリンクのサイトに『1つのセンテンスは、「$」で始まり、「(改行(\r\n))」で終わります。』 + とあるので、_gps.getc()が取得する値が$以外の場合は無視して、$が始まったところを探すためにループしている。*/ i = 0; - /* gps_data初期化 */ + /* gpa_data初期化 */ for(int j = 0; j < 256; j++) gps_data[j] = '\0'; /* NMEAから一行読み込み */ - while((gps_data[i] = _gps.getc()) != '\r') { + while((gps_data[i] = _gps.getc()) != '\r') {//受信したデータを配列に格納し、'\r'でない場合ループ i++; if(i == 256) { i = 255; - break; + return 0;; } } } while(strstr(gps_data, "GPGGA") == NULL); //GGAセンテンスまで一行ずつ読み込み続ける @@ -39,6 +41,7 @@ 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(度部分) */ double latitude_dd = (double)(raw_latitude / 100); double longitude_dd = (double)(raw_longitude / 100); @@ -52,7 +55,7 @@ longitude = longitude_dd + longitude_md; return true; +//ここまでgpsが受信する値は単位が度になっていないので、度に直している } else return false; //GGAセンテンスの情報が欠けている時 -} - \ No newline at end of file +} \ No newline at end of file