2017年伊豆大島共同打ち上げ実験用電装モジュール搭載GPS測位プログラム
Dependents: Hybrid_interruptGPS Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more
GPS_interrupt.h@1:57eeee14dd31, 2017-01-02 (annotated)
- 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?
User | Revision | Line number | New 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 |