2017年伊豆大島共同打ち上げ実験用電装モジュール搭載GPS測位プログラム

Dependents:   Hybrid_interruptGPS Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more

Committer:
Gaku0606
Date:
Sun Jan 15 20:01:46 2017 +0000
Revision:
4:758f97bee95a
Parent:
3:8e66ec281888
Child:
5:15ff963f066b
GPS_interrupt.h ver 1.3.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaku0606 0:74d8e952a3bd 1 /*=============================================================================
Gaku0606 4:758f97bee95a 2 * GPS_interrupt.lib ver 1.3.5
Gaku0606 0:74d8e952a3bd 3 *
Gaku0606 1:57eeee14dd31 4 * Each palameters are not stable because they can be changed unexpectedly.
Gaku0606 1:57eeee14dd31 5 * Therefor, you should use the funtions which have return value.
Gaku0606 1:57eeee14dd31 6 * Then, you must not substitute any value for those palameters.
Gaku0606 2:7be89bab6db9 7 * なんかコマンドの送信ミスがあるみたいで、確認して次に進めるようにすべきかも
Gaku0606 2:7be89bab6db9 8 * PCソフトで設定して、バックアップ電池付けるのが正確っぽい
Gaku0606 0:74d8e952a3bd 9 *=============================================================================*/
Gaku0606 4:758f97bee95a 10 /**
Gaku0606 4:758f97bee95a 11 * @file GPS_interrupt.h
Gaku0606 4:758f97bee95a 12 * @brief GPSから送られてくるデータをバックグラウンドで解析し、呼び出せるライブラリ
Gaku0606 4:758f97bee95a 13 * @author 松本岳
Gaku0606 4:758f97bee95a 14 * @note ver1.3.5
Gaku0606 4:758f97bee95a 15 */
Gaku0606 4:758f97bee95a 16
Gaku0606 0:74d8e952a3bd 17 #ifndef GPS_INTERRUPT_H_
Gaku0606 0:74d8e952a3bd 18 #define GPS_INTERRUPT_H_
Gaku0606 0:74d8e952a3bd 19
Gaku0606 2:7be89bab6db9 20 #include "mbed.h"//要る?
Gaku0606 0:74d8e952a3bd 21
Gaku0606 0:74d8e952a3bd 22 class GPS_interrupt{
Gaku0606 0:74d8e952a3bd 23
Gaku0606 0:74d8e952a3bd 24 public:
Gaku0606 4:758f97bee95a 25 /**
Gaku0606 2:7be89bab6db9 26 * @brief GPS_interrupt's constructer
Gaku0606 2:7be89bab6db9 27 * @param *_gps : your Rawserial bus address
Gaku0606 2:7be89bab6db9 28 * @param _frequency : set updata rate
Gaku0606 4:758f97bee95a 29 */
Gaku0606 4:758f97bee95a 30 GPS_interrupt(RawSerial *_gps, int _frequency = 10);
Gaku0606 4:758f97bee95a 31 GPS_interrupt* gps_irq;
Gaku0606 0:74d8e952a3bd 32 void initialize();//初期化関数
Gaku0606 0:74d8e952a3bd 33 void gps_auto_receive();
Gaku0606 2:7be89bab6db9 34 bool processGPRMC(char *line);
Gaku0606 2:7be89bab6db9 35 bool processGPGGA(char *line);
Gaku0606 4:758f97bee95a 36 void debug(bool tf);
Gaku0606 2:7be89bab6db9 37 unsigned char checkSum(char *str);
Gaku0606 2:7be89bab6db9 38 void rmc_initialize();
Gaku0606 2:7be89bab6db9 39 void gga_initialize();
Gaku0606 0:74d8e952a3bd 40
Gaku0606 2:7be89bab6db9 41 private://別にpublicにしても良かったけれど、unexpectedlyに変更されるので使えないようにしてやった
Gaku0606 2:7be89bab6db9 42 int baudrate;
Gaku0606 2:7be89bab6db9 43 int frequency;
Gaku0606 2:7be89bab6db9 44
Gaku0606 4:758f97bee95a 45 double latitude;
Gaku0606 4:758f97bee95a 46 double longitude;
Gaku0606 4:758f97bee95a 47 int year;
Gaku0606 4:758f97bee95a 48 int month;
Gaku0606 4:758f97bee95a 49 int day;
Gaku0606 4:758f97bee95a 50 int hour;
Gaku0606 4:758f97bee95a 51 int minutes;
Gaku0606 4:758f97bee95a 52 double seconds;
Gaku0606 4:758f97bee95a 53 double knot;
Gaku0606 4:758f97bee95a 54 double degree;
Gaku0606 4:758f97bee95a 55 double height;
Gaku0606 4:758f97bee95a 56 double geoid;
Gaku0606 4:758f97bee95a 57 int number;
Gaku0606 0:74d8e952a3bd 58
Gaku0606 4:758f97bee95a 59 char gps_buffer_A[128];
Gaku0606 4:758f97bee95a 60 char gps_buffer_B[128];
Gaku0606 4:758f97bee95a 61
Gaku0606 4:758f97bee95a 62 bool debugFlag;
Gaku0606 2:7be89bab6db9 63
Gaku0606 2:7be89bab6db9 64 public:
Gaku0606 4:758f97bee95a 65 char *gps_read_buffer;
Gaku0606 4:758f97bee95a 66 bool gps_readable;
Gaku0606 0:74d8e952a3bd 67 private:
Gaku0606 0:74d8e952a3bd 68 RawSerial *gps;
Gaku0606 0:74d8e952a3bd 69 public:
Gaku0606 4:758f97bee95a 70 /**
Gaku0606 4:758f97bee95a 71 * @fn
Gaku0606 4:758f97bee95a 72 * 経度を返す関数
Gaku0606 4:758f97bee95a 73 * @brief 経度を取得
Gaku0606 4:758f97bee95a 74 * @return double型 経度
Gaku0606 4:758f97bee95a 75 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 76 */
Gaku0606 0:74d8e952a3bd 77 inline double Longitude(){
Gaku0606 0:74d8e952a3bd 78 return longitude;
Gaku0606 0:74d8e952a3bd 79 }
Gaku0606 4:758f97bee95a 80
Gaku0606 4:758f97bee95a 81 /**
Gaku0606 4:758f97bee95a 82 * @fn
Gaku0606 4:758f97bee95a 83 * 緯度を返す関数
Gaku0606 4:758f97bee95a 84 * @brief 緯度を取得
Gaku0606 4:758f97bee95a 85 * @return double型 緯度
Gaku0606 4:758f97bee95a 86 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 87 */
Gaku0606 0:74d8e952a3bd 88 inline double Latitude(){
Gaku0606 0:74d8e952a3bd 89 return latitude;
Gaku0606 0:74d8e952a3bd 90 }
Gaku0606 4:758f97bee95a 91
Gaku0606 4:758f97bee95a 92 /**
Gaku0606 4:758f97bee95a 93 * @fn
Gaku0606 4:758f97bee95a 94 * 年を返す関数
Gaku0606 4:758f97bee95a 95 * @brief 年を取得
Gaku0606 4:758f97bee95a 96 * @return int型 年
Gaku0606 4:758f97bee95a 97 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 98 */
Gaku0606 0:74d8e952a3bd 99 inline int Year(){
Gaku0606 0:74d8e952a3bd 100 return year;
Gaku0606 0:74d8e952a3bd 101 }
Gaku0606 4:758f97bee95a 102
Gaku0606 4:758f97bee95a 103 /**
Gaku0606 4:758f97bee95a 104 * @fn
Gaku0606 4:758f97bee95a 105 * 月を返す関数
Gaku0606 4:758f97bee95a 106 * @brief 月を取得
Gaku0606 4:758f97bee95a 107 * @return int型 月
Gaku0606 4:758f97bee95a 108 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 109 */
Gaku0606 0:74d8e952a3bd 110 inline int Month(){
Gaku0606 0:74d8e952a3bd 111 return month;
Gaku0606 0:74d8e952a3bd 112 }
Gaku0606 4:758f97bee95a 113
Gaku0606 4:758f97bee95a 114 /**
Gaku0606 4:758f97bee95a 115 * @fn
Gaku0606 4:758f97bee95a 116 * 日にちを返す関数
Gaku0606 4:758f97bee95a 117 * @brief 日にちを取得
Gaku0606 4:758f97bee95a 118 * @return int型 日にち
Gaku0606 4:758f97bee95a 119 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 120 */
Gaku0606 0:74d8e952a3bd 121 inline int Day(){
Gaku0606 0:74d8e952a3bd 122 return day;
Gaku0606 0:74d8e952a3bd 123 }
Gaku0606 4:758f97bee95a 124
Gaku0606 4:758f97bee95a 125 /**
Gaku0606 4:758f97bee95a 126 * @fn
Gaku0606 4:758f97bee95a 127 * 時間を返す関数
Gaku0606 4:758f97bee95a 128 * @brief 時間を取得
Gaku0606 4:758f97bee95a 129 * @return int型 時間
Gaku0606 4:758f97bee95a 130 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 131 */
Gaku0606 0:74d8e952a3bd 132 inline int Hour(){
Gaku0606 0:74d8e952a3bd 133 return hour;
Gaku0606 0:74d8e952a3bd 134 }
Gaku0606 4:758f97bee95a 135
Gaku0606 4:758f97bee95a 136 /**
Gaku0606 4:758f97bee95a 137 * @fn
Gaku0606 4:758f97bee95a 138 * 分を返す関数
Gaku0606 4:758f97bee95a 139 * @brief 分を取得
Gaku0606 4:758f97bee95a 140 * @return int型 分
Gaku0606 4:758f97bee95a 141 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 142 */
Gaku0606 0:74d8e952a3bd 143 inline int Minutes(){
Gaku0606 0:74d8e952a3bd 144 return minutes;
Gaku0606 0:74d8e952a3bd 145 }
Gaku0606 4:758f97bee95a 146
Gaku0606 4:758f97bee95a 147 /**
Gaku0606 4:758f97bee95a 148 * @fn
Gaku0606 4:758f97bee95a 149 * 秒を返す関数
Gaku0606 4:758f97bee95a 150 * @brief 秒を取得
Gaku0606 4:758f97bee95a 151 * @return double型 秒
Gaku0606 4:758f97bee95a 152 * @detail inline展開したつもり
Gaku0606 4:758f97bee95a 153 */
Gaku0606 0:74d8e952a3bd 154 inline double Seconds(){
Gaku0606 0:74d8e952a3bd 155 return seconds;
Gaku0606 0:74d8e952a3bd 156 }
Gaku0606 4:758f97bee95a 157
Gaku0606 4:758f97bee95a 158 /**
Gaku0606 4:758f97bee95a 159 * @fn
Gaku0606 4:758f97bee95a 160 * 経度・緯度を取得できる関数
Gaku0606 4:758f97bee95a 161 * @brief 2つの変数に経度、緯度の順に値を代入する
Gaku0606 4:758f97bee95a 162 * @param (*lon) double型 経度 アドレス
Gaku0606 4:758f97bee95a 163 * @param (*lat) double型 緯度 アドレス
Gaku0606 4:758f97bee95a 164 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 165 * @detail 2つ変数を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 166 */
Gaku0606 4:758f97bee95a 167 inline bool getPosition(double *lon, double *lat){
Gaku0606 0:74d8e952a3bd 168 *lon = longitude;
Gaku0606 4:758f97bee95a 169 *lat = latitude;
Gaku0606 4:758f97bee95a 170 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 171 else return false;
Gaku0606 0:74d8e952a3bd 172 }
Gaku0606 4:758f97bee95a 173
Gaku0606 4:758f97bee95a 174 /**
Gaku0606 4:758f97bee95a 175 * @fn
Gaku0606 4:758f97bee95a 176 * 経度・緯度を取得できる関数
Gaku0606 4:758f97bee95a 177 * @brief 2つの配列に経度、緯度の順に値を代入する
Gaku0606 4:758f97bee95a 178 * @param (*lonlat) double型 要素2の配列
Gaku0606 4:758f97bee95a 179 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 180 * @detail 要素2の配列を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 181 */
Gaku0606 4:758f97bee95a 182 inline bool getPosition(double *lonlat){
Gaku0606 0:74d8e952a3bd 183 lonlat[0] = longitude;
Gaku0606 4:758f97bee95a 184 lonlat[1] = latitude;
Gaku0606 4:758f97bee95a 185 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 186 else return false;
Gaku0606 0:74d8e952a3bd 187 }
Gaku0606 4:758f97bee95a 188
Gaku0606 4:758f97bee95a 189 /**
Gaku0606 4:758f97bee95a 190 * @fn
Gaku0606 4:758f97bee95a 191 * 日付・時刻を取得できる関数
Gaku0606 4:758f97bee95a 192 * @brief 6つの変数に年、月、日、時間、分、秒の順に値を代入する
Gaku0606 4:758f97bee95a 193 * @param (*_year) int型 年 アドレス
Gaku0606 4:758f97bee95a 194 * @param (*_month) int型 月 アドレス
Gaku0606 4:758f97bee95a 195 * @param (*_day) int型 日 アドレス
Gaku0606 4:758f97bee95a 196 * @param (*_hour) int型 時間 アドレス
Gaku0606 4:758f97bee95a 197 * @param (*_minutes) int型 分 アドレス
Gaku0606 4:758f97bee95a 198 * @param (*_seconds) double型 秒 アドレス
Gaku0606 4:758f97bee95a 199 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 200 * @detail 6つ変数を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 201 */
Gaku0606 4:758f97bee95a 202 inline bool getUTC(int *_year, int *_month, int *_day, int *_hour, int *_minutes, double *_seconds){
Gaku0606 0:74d8e952a3bd 203 *_year = year;
Gaku0606 0:74d8e952a3bd 204 *_month = month;
Gaku0606 0:74d8e952a3bd 205 *_day = day;
Gaku0606 0:74d8e952a3bd 206 *_hour = hour;
Gaku0606 0:74d8e952a3bd 207 *_minutes = minutes;
Gaku0606 4:758f97bee95a 208 *_seconds = seconds;
Gaku0606 4:758f97bee95a 209 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 210 else return false;
Gaku0606 0:74d8e952a3bd 211 }
Gaku0606 4:758f97bee95a 212
Gaku0606 4:758f97bee95a 213 /**
Gaku0606 4:758f97bee95a 214 * @fn
Gaku0606 4:758f97bee95a 215 * 世界協定時間の日付・時刻を取得できる関数
Gaku0606 4:758f97bee95a 216 * @brief 要素数6の配列に年、月、日、時間、分、秒の順に値を代入する
Gaku0606 4:758f97bee95a 217 * @param (*_utc) float型 秒 アドレス
Gaku0606 4:758f97bee95a 218 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 219 * @detail 要素6の配列を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 220 */
Gaku0606 4:758f97bee95a 221 inline bool getUTC(float *_utc){
Gaku0606 0:74d8e952a3bd 222 _utc[0] = (float)year;
Gaku0606 0:74d8e952a3bd 223 _utc[1] = (float)month;
Gaku0606 0:74d8e952a3bd 224 _utc[2] = (float)day;
Gaku0606 0:74d8e952a3bd 225 _utc[3] = (float)hour;
Gaku0606 0:74d8e952a3bd 226 _utc[4] = (float)minutes;
Gaku0606 0:74d8e952a3bd 227 _utc[5] = seconds;
Gaku0606 4:758f97bee95a 228
Gaku0606 4:758f97bee95a 229 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 230 else return false;
Gaku0606 0:74d8e952a3bd 231 }
Gaku0606 4:758f97bee95a 232
Gaku0606 4:758f97bee95a 233 /**
Gaku0606 4:758f97bee95a 234 * @fn
Gaku0606 4:758f97bee95a 235 * 世界協定時間の日付・時刻を取得できる関数
Gaku0606 4:758f97bee95a 236 * @brief 要素数6の配列に年、月、日、時間、分、秒の順に値を代入する
Gaku0606 4:758f97bee95a 237 * @param (*_utc) int型 秒 アドレス
Gaku0606 4:758f97bee95a 238 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 239 * @detail 要素6の配列を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 240 */
Gaku0606 4:758f97bee95a 241 inline bool getUTC(int *_utc){
Gaku0606 0:74d8e952a3bd 242 _utc[0] = year;
Gaku0606 0:74d8e952a3bd 243 _utc[1] = month;
Gaku0606 0:74d8e952a3bd 244 _utc[2] = day;
Gaku0606 0:74d8e952a3bd 245 _utc[3] = hour;
Gaku0606 0:74d8e952a3bd 246 _utc[4] = minutes;
Gaku0606 0:74d8e952a3bd 247 _utc[5] = (int)seconds;
Gaku0606 4:758f97bee95a 248 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 249 else return false;
Gaku0606 0:74d8e952a3bd 250 }
Gaku0606 4:758f97bee95a 251
Gaku0606 4:758f97bee95a 252 /**
Gaku0606 4:758f97bee95a 253 * @fn
Gaku0606 4:758f97bee95a 254 * 速度・進行方角を取得できる関数
Gaku0606 4:758f97bee95a 255 * @brief 2つの変数に速度、進行方角の順に値を代入する
Gaku0606 4:758f97bee95a 256 * @param (*_knot) double型 経度 アドレス [knot]
Gaku0606 4:758f97bee95a 257 * @param (*_degree) double型 緯度 アドレス [degree] 北から右回り正です。
Gaku0606 4:758f97bee95a 258 * @return データが有効かどうか 有効ならtrue, 無効ならfalse
Gaku0606 4:758f97bee95a 259 * @detail 2つ変数を作って、そのアドレスを引数に与えてください。
Gaku0606 4:758f97bee95a 260 */
Gaku0606 4:758f97bee95a 261 inline bool getSpeedVector(double *_knot, double *_degree){
Gaku0606 2:7be89bab6db9 262 *_knot = knot;
Gaku0606 2:7be89bab6db9 263 *_degree = degree;
Gaku0606 4:758f97bee95a 264 if(gps_readable) return true;
Gaku0606 4:758f97bee95a 265 else return false;
Gaku0606 2:7be89bab6db9 266 }
Gaku0606 4:758f97bee95a 267
Gaku0606 4:758f97bee95a 268 /**
Gaku0606 4:758f97bee95a 269 * @fn
Gaku0606 4:758f97bee95a 270 * 捕捉衛星数を取得できる関数
Gaku0606 4:758f97bee95a 271 * @brief 捕捉衛星数を返します。
Gaku0606 4:758f97bee95a 272 * @return int型 捕捉衛星数 アドレス
Gaku0606 4:758f97bee95a 273 */
Gaku0606 2:7be89bab6db9 274 inline int Number(){
Gaku0606 2:7be89bab6db9 275 return number;
Gaku0606 2:7be89bab6db9 276 }
Gaku0606 4:758f97bee95a 277
Gaku0606 4:758f97bee95a 278 /**
Gaku0606 4:758f97bee95a 279 * @fn
Gaku0606 4:758f97bee95a 280 * 標高を取得できる関数
Gaku0606 4:758f97bee95a 281 * @brief 標高を返します。
Gaku0606 4:758f97bee95a 282 * @return double型 標高 アドレス
Gaku0606 4:758f97bee95a 283 */
Gaku0606 2:7be89bab6db9 284 inline double Height(){
Gaku0606 2:7be89bab6db9 285 return height;
Gaku0606 2:7be89bab6db9 286 }
Gaku0606 4:758f97bee95a 287
Gaku0606 4:758f97bee95a 288
Gaku0606 4:758f97bee95a 289 /**
Gaku0606 4:758f97bee95a 290 * @fn
Gaku0606 4:758f97bee95a 291 * 速さを取得できる関数
Gaku0606 4:758f97bee95a 292 * @brief 速さを返します。
Gaku0606 4:758f97bee95a 293 * @return double型 速さ アドレス[knot]
Gaku0606 4:758f97bee95a 294 */
Gaku0606 2:7be89bab6db9 295 inline double Knot(){
Gaku0606 2:7be89bab6db9 296 return knot;
Gaku0606 2:7be89bab6db9 297 }
Gaku0606 4:758f97bee95a 298
Gaku0606 4:758f97bee95a 299
Gaku0606 4:758f97bee95a 300 /**
Gaku0606 4:758f97bee95a 301 * @fn
Gaku0606 4:758f97bee95a 302 * 進行方角を取得できる関数
Gaku0606 4:758f97bee95a 303 * @brief 進行方角を返します。
Gaku0606 4:758f97bee95a 304 * @return double型 進行方角 アドレス 北から右回り正です。
Gaku0606 4:758f97bee95a 305 */
Gaku0606 2:7be89bab6db9 306 inline double Degree(){
Gaku0606 2:7be89bab6db9 307 return degree;
Gaku0606 2:7be89bab6db9 308 }
Gaku0606 0:74d8e952a3bd 309 };
Gaku0606 1:57eeee14dd31 310 /////////////////
Gaku0606 1:57eeee14dd31 311 /////sample//////
Gaku0606 1:57eeee14dd31 312 /////////////////
Gaku0606 1:57eeee14dd31 313 /*
Gaku0606 4:758f97bee95a 314 @code
Gaku0606 1:57eeee14dd31 315 #include "mbed.h"
Gaku0606 1:57eeee14dd31 316 #include "GPS_interrupt.h"
Gaku0606 1:57eeee14dd31 317 Serial pc(USBTX, USBRX);
Gaku0606 1:57eeee14dd31 318 RawSerial mygps(p9, p10);
Gaku0606 0:74d8e952a3bd 319
Gaku0606 2:7be89bab6db9 320 GPS_interrupt gps(&mygps, 115200, 10, 115200);
Gaku0606 2:7be89bab6db9 321
Gaku0606 2:7be89bab6db9 322 void bootFunction(){//do not need
Gaku0606 2:7be89bab6db9 323 pc.printf("\r\n");
Gaku0606 2:7be89bab6db9 324 pc.printf("start LPC1768 boot phase\r\n");
Gaku0606 2:7be89bab6db9 325 wait(0.5);
Gaku0606 2:7be89bab6db9 326 for(int i = 0;i < 100;i++){
Gaku0606 2:7be89bab6db9 327 pc.printf("Loading... : %3d [%%]\r", i);
Gaku0606 2:7be89bab6db9 328 wait(0.025);
Gaku0606 2:7be89bab6db9 329 }
Gaku0606 2:7be89bab6db9 330 pc.printf("Loading... : %3d [%%]\r\n", 100);
Gaku0606 2:7be89bab6db9 331 pc.printf("\t-> finished!!\r\n");
Gaku0606 2:7be89bab6db9 332 pc.printf("System : %d Hz\r\n", SystemCoreClock );
Gaku0606 2:7be89bab6db9 333 wait(0.5);
Gaku0606 2:7be89bab6db9 334 pc.printf("start main program\r\n");
Gaku0606 2:7be89bab6db9 335 wait(0.1);
Gaku0606 2:7be89bab6db9 336 pc.printf("initialize");
Gaku0606 2:7be89bab6db9 337 wait(0.75);
Gaku0606 2:7be89bab6db9 338 pc.printf(" -> OK\r\n");
Gaku0606 2:7be89bab6db9 339 wait(0.1);
Gaku0606 2:7be89bab6db9 340 pc.printf("GPS Connecting");
Gaku0606 2:7be89bab6db9 341 wait(0.5);
Gaku0606 2:7be89bab6db9 342 pc.printf(".");
Gaku0606 2:7be89bab6db9 343 wait(0.5);
Gaku0606 2:7be89bab6db9 344 pc.printf(".");
Gaku0606 2:7be89bab6db9 345 wait(0.5);
Gaku0606 2:7be89bab6db9 346 pc.printf(".");
Gaku0606 2:7be89bab6db9 347 wait(0.5);
Gaku0606 2:7be89bab6db9 348 pc.printf(".");
Gaku0606 2:7be89bab6db9 349 wait(0.5);
Gaku0606 2:7be89bab6db9 350 pc.printf(".");
Gaku0606 2:7be89bab6db9 351 wait(0.5);
Gaku0606 2:7be89bab6db9 352 pc.printf(".");
Gaku0606 2:7be89bab6db9 353 wait(0.5);
Gaku0606 2:7be89bab6db9 354 while(1){
Gaku0606 2:7be89bab6db9 355 if(gps.gps_readable) break;
Gaku0606 2:7be89bab6db9 356 }
Gaku0606 2:7be89bab6db9 357 pc.printf(" -> OK\r\n");
Gaku0606 2:7be89bab6db9 358 pc.printf("start!!\r\n\r\n");
Gaku0606 2:7be89bab6db9 359 wait(0.5);
Gaku0606 2:7be89bab6db9 360 }
Gaku0606 1:57eeee14dd31 361
Gaku0606 1:57eeee14dd31 362 int main() {
Gaku0606 1:57eeee14dd31 363
Gaku0606 1:57eeee14dd31 364 pc.baud(115200);
Gaku0606 2:7be89bab6db9 365 //mygps.baud(9600);
Gaku0606 1:57eeee14dd31 366
Gaku0606 2:7be89bab6db9 367 bootFunction();
Gaku0606 1:57eeee14dd31 368
Gaku0606 1:57eeee14dd31 369 while(1){
Gaku0606 2:7be89bab6db9 370 double xy[2] = {0};
Gaku0606 2:7be89bab6db9 371 float utc[6] = {0};
Gaku0606 2:7be89bab6db9 372 gps.getPosition(xy);
Gaku0606 2:7be89bab6db9 373 gps.getUTC(utc);
Gaku0606 2:7be89bab6db9 374 pc.printf("\033[K");
Gaku0606 2:7be89bab6db9 375 pc.printf("%d/%d/%d %d:%d:%02.2f ",(int)utc[0],(int)utc[1], (int)utc[2], (int)utc[3], (int)utc[4] ,utc[5]);
Gaku0606 2:7be89bab6db9 376 pc.printf("(%3.7fe,%3.7fn) ",xy[0], xy[1]);
Gaku0606 2:7be89bab6db9 377 pc.printf("%d satellites, %.2f[m], %.3f[m/s], %3.2f[degree]\r", gps.Number(), gps.Height(), gps.Knot()*1852/3600, gps.Degree());
Gaku0606 2:7be89bab6db9 378 wait(0.1);
Gaku0606 1:57eeee14dd31 379 }
Gaku0606 1:57eeee14dd31 380 }
Gaku0606 4:758f97bee95a 381 @codeend
Gaku0606 1:57eeee14dd31 382 */
Gaku0606 0:74d8e952a3bd 383 #endif