Class導入前です まだできてません

Dependencies:   mbed CameraUS015sb612-3

Committer:
YUPPY
Date:
Wed Nov 20 08:06:46 2019 +0000
Revision:
4:1354e56c7dd3
class_before_loading;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YUPPY 4:1354e56c7dd3 1 #include "mbed.h"
YUPPY 4:1354e56c7dd3 2 #include "getGPS.h"
YUPPY 4:1354e56c7dd3 3
YUPPY 4:1354e56c7dd3 4 GPS::GPS(PinName gpstx,PinName gpsrx): _gps(gpstx,gpsrx)
YUPPY 4:1354e56c7dd3 5 {
YUPPY 4:1354e56c7dd3 6 latitude = 0;
YUPPY 4:1354e56c7dd3 7 longitude = 0;
YUPPY 4:1354e56c7dd3 8 _gps.baud(GPSBAUD);
YUPPY 4:1354e56c7dd3 9 _gps.printf("$PMTK314,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29");
YUPPY 4:1354e56c7dd3 10 }
YUPPY 4:1354e56c7dd3 11
YUPPY 4:1354e56c7dd3 12 bool GPS::getgps()
YUPPY 4:1354e56c7dd3 13 {
YUPPY 4:1354e56c7dd3 14 char gps_data[256];
YUPPY 4:1354e56c7dd3 15 int i;
YUPPY 4:1354e56c7dd3 16
YUPPY 4:1354e56c7dd3 17 do {
YUPPY 4:1354e56c7dd3 18 while(_gps.getc() != '$'); //$マークまで読み飛ばし
YUPPY 4:1354e56c7dd3 19 i = 0;
YUPPY 4:1354e56c7dd3 20
YUPPY 4:1354e56c7dd3 21 /* gpa_data初期化 */
YUPPY 4:1354e56c7dd3 22 for(int j = 0; j < 256; j++)
YUPPY 4:1354e56c7dd3 23 gps_data[j] = '\0';
YUPPY 4:1354e56c7dd3 24
YUPPY 4:1354e56c7dd3 25 /* NMEAから一行読み込み */
YUPPY 4:1354e56c7dd3 26 while((gps_data[i] = _gps.getc()) != '\r') {
YUPPY 4:1354e56c7dd3 27 i++;
YUPPY 4:1354e56c7dd3 28 if(i == 256) {
YUPPY 4:1354e56c7dd3 29 i = 255;
YUPPY 4:1354e56c7dd3 30 break;
YUPPY 4:1354e56c7dd3 31 }
YUPPY 4:1354e56c7dd3 32 }
YUPPY 4:1354e56c7dd3 33 } while(strstr(gps_data, "GPGGA") == NULL); //GGAセンテンスまで一行ずつ読み込み続ける
YUPPY 4:1354e56c7dd3 34
YUPPY 4:1354e56c7dd3 35 int rlock;
YUPPY 4:1354e56c7dd3 36 char ns,ew;
YUPPY 4:1354e56c7dd3 37 double w_time, raw_longitude, raw_latitude;
YUPPY 4:1354e56c7dd3 38 int satnum;
YUPPY 4:1354e56c7dd3 39 double hdop;
YUPPY 4:1354e56c7dd3 40
YUPPY 4:1354e56c7dd3 41 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) {
YUPPY 4:1354e56c7dd3 42 /* 座標1(度部分) */
YUPPY 4:1354e56c7dd3 43 double latitude_dd = (double)(raw_latitude / 100);
YUPPY 4:1354e56c7dd3 44 double longitude_dd = (double)(raw_longitude / 100);
YUPPY 4:1354e56c7dd3 45
YUPPY 4:1354e56c7dd3 46 /* 座標2(分部分 → 度) */
YUPPY 4:1354e56c7dd3 47 double latitude_md = (raw_latitude - latitude_dd * 100) / 60;
YUPPY 4:1354e56c7dd3 48 double longitude_md = (raw_longitude - longitude_dd * 100) / 60;
YUPPY 4:1354e56c7dd3 49
YUPPY 4:1354e56c7dd3 50 /* 座標1 + 2 */
YUPPY 4:1354e56c7dd3 51 latitude = latitude_dd + latitude_md;
YUPPY 4:1354e56c7dd3 52 longitude = longitude_dd + longitude_md;
YUPPY 4:1354e56c7dd3 53
YUPPY 4:1354e56c7dd3 54 return true;
YUPPY 4:1354e56c7dd3 55 } else
YUPPY 4:1354e56c7dd3 56 return false; //GGAセンテンスの情報が欠けている時
YUPPY 4:1354e56c7dd3 57 }
YUPPY 4:1354e56c7dd3 58