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

Dependents:   Hybrid_interruptGPS Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more

Committer:
Gaku0606
Date:
Mon Jan 02 01:05:31 2017 +0000
Revision:
1:57eeee14dd31
Parent:
0:74d8e952a3bd
Child:
2:7be89bab6db9
GPS_interrupt.lib ver 1.0.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gaku0606 0:74d8e952a3bd 1 /*=============================================================================
Gaku0606 1:57eeee14dd31 2 * GPS_interrupt.lib ver 1.0.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 1:57eeee14dd31 7 *
Gaku0606 0:74d8e952a3bd 8 *=============================================================================*/
Gaku0606 0:74d8e952a3bd 9 #ifndef GPS_INTERRUPT_H_
Gaku0606 0:74d8e952a3bd 10 #define GPS_INTERRUPT_H_
Gaku0606 0:74d8e952a3bd 11
Gaku0606 0:74d8e952a3bd 12 #include "mbed.h"
Gaku0606 0:74d8e952a3bd 13
Gaku0606 0:74d8e952a3bd 14
Gaku0606 0:74d8e952a3bd 15 class GPS_interrupt{
Gaku0606 0:74d8e952a3bd 16
Gaku0606 0:74d8e952a3bd 17 public:
Gaku0606 0:74d8e952a3bd 18 GPS_interrupt(RawSerial *_gps, int baudrate = 9600);
Gaku0606 0:74d8e952a3bd 19 static GPS_interrupt* gps_irq;
Gaku0606 0:74d8e952a3bd 20 void initialize();//初期化関数
Gaku0606 0:74d8e952a3bd 21 void gps_auto_receive();
Gaku0606 0:74d8e952a3bd 22 bool processGPS(char *line);
Gaku0606 0:74d8e952a3bd 23
Gaku0606 1:57eeee14dd31 24 private:
Gaku0606 0:74d8e952a3bd 25 static double latitude;
Gaku0606 0:74d8e952a3bd 26 static double longitude;
Gaku0606 0:74d8e952a3bd 27 static int year;
Gaku0606 0:74d8e952a3bd 28 static int month;
Gaku0606 0:74d8e952a3bd 29 static int day;
Gaku0606 0:74d8e952a3bd 30 static int hour;
Gaku0606 0:74d8e952a3bd 31 static int minutes;
Gaku0606 0:74d8e952a3bd 32 static double seconds;
Gaku0606 0:74d8e952a3bd 33 static double knot;
Gaku0606 0:74d8e952a3bd 34 static double degree;
Gaku0606 0:74d8e952a3bd 35 static double height;
Gaku0606 0:74d8e952a3bd 36 static double geoid;
Gaku0606 0:74d8e952a3bd 37 static int number;
Gaku0606 0:74d8e952a3bd 38
Gaku0606 0:74d8e952a3bd 39 static char gps_buffer_A[128];
Gaku0606 0:74d8e952a3bd 40 static char gps_buffer_B[128];
Gaku0606 0:74d8e952a3bd 41 static char *gps_read_buffer;
Gaku0606 1:57eeee14dd31 42 public:
Gaku0606 0:74d8e952a3bd 43 static bool gps_readable;
Gaku0606 0:74d8e952a3bd 44 private:
Gaku0606 0:74d8e952a3bd 45 RawSerial *gps;
Gaku0606 0:74d8e952a3bd 46 public:
Gaku0606 0:74d8e952a3bd 47 inline double Longitude(){
Gaku0606 0:74d8e952a3bd 48 return longitude;
Gaku0606 0:74d8e952a3bd 49 }
Gaku0606 0:74d8e952a3bd 50 inline double Latitude(){
Gaku0606 0:74d8e952a3bd 51 return latitude;
Gaku0606 0:74d8e952a3bd 52 }
Gaku0606 0:74d8e952a3bd 53 inline int Year(){
Gaku0606 0:74d8e952a3bd 54 return year;
Gaku0606 0:74d8e952a3bd 55 }
Gaku0606 0:74d8e952a3bd 56 inline int Month(){
Gaku0606 0:74d8e952a3bd 57 return month;
Gaku0606 0:74d8e952a3bd 58 }
Gaku0606 0:74d8e952a3bd 59 inline int Day(){
Gaku0606 0:74d8e952a3bd 60 return day;
Gaku0606 0:74d8e952a3bd 61 }
Gaku0606 0:74d8e952a3bd 62 inline int Hour(){
Gaku0606 0:74d8e952a3bd 63 return hour;
Gaku0606 0:74d8e952a3bd 64 }
Gaku0606 0:74d8e952a3bd 65 inline int Minutes(){
Gaku0606 0:74d8e952a3bd 66 return minutes;
Gaku0606 0:74d8e952a3bd 67 }
Gaku0606 0:74d8e952a3bd 68 inline double Seconds(){
Gaku0606 0:74d8e952a3bd 69 return seconds;
Gaku0606 0:74d8e952a3bd 70 }
Gaku0606 0:74d8e952a3bd 71 inline void getPosition(double *lon, double *lat){
Gaku0606 0:74d8e952a3bd 72 *lon = longitude;
Gaku0606 0:74d8e952a3bd 73 *lat = latitude;
Gaku0606 0:74d8e952a3bd 74 }
Gaku0606 0:74d8e952a3bd 75 inline void getPosition(double *lonlat){
Gaku0606 0:74d8e952a3bd 76 lonlat[0] = longitude;
Gaku0606 0:74d8e952a3bd 77 lonlat[1] = latitude;
Gaku0606 0:74d8e952a3bd 78 }
Gaku0606 0:74d8e952a3bd 79 inline void getUTC(int *_year, int *_month, int *_day, int *_hour, int *_minutes, double *_seconds){
Gaku0606 0:74d8e952a3bd 80 *_year = year;
Gaku0606 0:74d8e952a3bd 81 *_month = month;
Gaku0606 0:74d8e952a3bd 82 *_day = day;
Gaku0606 0:74d8e952a3bd 83 *_hour = hour;
Gaku0606 0:74d8e952a3bd 84 *_minutes = minutes;
Gaku0606 0:74d8e952a3bd 85 *_seconds = seconds;
Gaku0606 0:74d8e952a3bd 86 }
Gaku0606 0:74d8e952a3bd 87 inline void getUTC(float *_utc){
Gaku0606 0:74d8e952a3bd 88 _utc[0] = (float)year;
Gaku0606 0:74d8e952a3bd 89 _utc[1] = (float)month;
Gaku0606 0:74d8e952a3bd 90 _utc[2] = (float)day;
Gaku0606 0:74d8e952a3bd 91 _utc[3] = (float)hour;
Gaku0606 0:74d8e952a3bd 92 _utc[4] = (float)minutes;
Gaku0606 0:74d8e952a3bd 93 _utc[5] = seconds;
Gaku0606 0:74d8e952a3bd 94 }
Gaku0606 0:74d8e952a3bd 95 inline void getUTC(int *_utc){
Gaku0606 0:74d8e952a3bd 96 _utc[0] = year;
Gaku0606 0:74d8e952a3bd 97 _utc[1] = month;
Gaku0606 0:74d8e952a3bd 98 _utc[2] = day;
Gaku0606 0:74d8e952a3bd 99 _utc[3] = hour;
Gaku0606 0:74d8e952a3bd 100 _utc[4] = minutes;
Gaku0606 0:74d8e952a3bd 101 _utc[5] = (int)seconds;
Gaku0606 0:74d8e952a3bd 102 }
Gaku0606 0:74d8e952a3bd 103 };
Gaku0606 1:57eeee14dd31 104 /////////////////
Gaku0606 1:57eeee14dd31 105 /////sample//////
Gaku0606 1:57eeee14dd31 106 /////////////////
Gaku0606 1:57eeee14dd31 107 /*
Gaku0606 1:57eeee14dd31 108 #include "mbed.h"
Gaku0606 1:57eeee14dd31 109 #include "GPS_interrupt.h"
Gaku0606 1:57eeee14dd31 110 Serial pc(USBTX, USBRX);
Gaku0606 1:57eeee14dd31 111 RawSerial mygps(p9, p10);
Gaku0606 0:74d8e952a3bd 112
Gaku0606 1:57eeee14dd31 113 GPS_interrupt gps(&mygps, 9600);
Gaku0606 1:57eeee14dd31 114
Gaku0606 1:57eeee14dd31 115 int main() {
Gaku0606 1:57eeee14dd31 116
Gaku0606 1:57eeee14dd31 117 pc.baud(115200);
Gaku0606 1:57eeee14dd31 118 mygps.baud(9600);
Gaku0606 1:57eeee14dd31 119
Gaku0606 1:57eeee14dd31 120 pc.printf("%d Hz\r\n", SystemCoreClock );
Gaku0606 1:57eeee14dd31 121
Gaku0606 1:57eeee14dd31 122 wait(3.0);
Gaku0606 1:57eeee14dd31 123 while(1){
Gaku0606 1:57eeee14dd31 124 double xy[2] = {0};
Gaku0606 1:57eeee14dd31 125 float utc[6] = {0};
Gaku0606 1:57eeee14dd31 126 gps.getPosition(xy);
Gaku0606 1:57eeee14dd31 127 gps.getUTC(utc);
Gaku0606 1:57eeee14dd31 128 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 1:57eeee14dd31 129 pc.printf("lon %f\tlat %f\r\n",xy[0], xy[1]);
Gaku0606 1:57eeee14dd31 130 wait(0.10);
Gaku0606 1:57eeee14dd31 131 }
Gaku0606 1:57eeee14dd31 132 }
Gaku0606 1:57eeee14dd31 133 */
Gaku0606 0:74d8e952a3bd 134 #endif