2017年伊豆大島共同打ち上げ実験用電装モジュール搭載GPS測位プログラム
Dependents: Hybrid_interruptGPS Hybrid_main_FirstEdtion rocket_logger_sinkan2018_v1 HYBRYD2018_IZU_ROCKET ... more
GPS_interrupt.h
- Committer:
- Gaku0606
- Date:
- 2017-01-02
- Revision:
- 1:57eeee14dd31
- Parent:
- 0:74d8e952a3bd
- Child:
- 2:7be89bab6db9
File content as of revision 1:57eeee14dd31:
/*============================================================================= * GPS_interrupt.lib ver 1.0.5 * * Each palameters are not stable because they can be changed unexpectedly. * Therefor, you should use the funtions which have return value. * Then, you must not substitute any value for those palameters. * *=============================================================================*/ #ifndef GPS_INTERRUPT_H_ #define GPS_INTERRUPT_H_ #include "mbed.h" class GPS_interrupt{ public: GPS_interrupt(RawSerial *_gps, int baudrate = 9600); static GPS_interrupt* gps_irq; void initialize();//初期化関数 void gps_auto_receive(); bool processGPS(char *line); private: static double latitude; static double longitude; static int year; static int month; static int day; static int hour; static int minutes; static double seconds; static double knot; static double degree; static double height; static double geoid; static int number; static char gps_buffer_A[128]; static char gps_buffer_B[128]; static char *gps_read_buffer; public: static bool gps_readable; private: RawSerial *gps; public: inline double Longitude(){ return longitude; } inline double Latitude(){ return latitude; } inline int Year(){ return year; } inline int Month(){ return month; } inline int Day(){ return day; } inline int Hour(){ return hour; } inline int Minutes(){ return minutes; } inline double Seconds(){ return seconds; } inline void getPosition(double *lon, double *lat){ *lon = longitude; *lat = latitude; } inline void getPosition(double *lonlat){ lonlat[0] = longitude; lonlat[1] = latitude; } inline void getUTC(int *_year, int *_month, int *_day, int *_hour, int *_minutes, double *_seconds){ *_year = year; *_month = month; *_day = day; *_hour = hour; *_minutes = minutes; *_seconds = seconds; } inline void getUTC(float *_utc){ _utc[0] = (float)year; _utc[1] = (float)month; _utc[2] = (float)day; _utc[3] = (float)hour; _utc[4] = (float)minutes; _utc[5] = seconds; } inline void getUTC(int *_utc){ _utc[0] = year; _utc[1] = month; _utc[2] = day; _utc[3] = hour; _utc[4] = minutes; _utc[5] = (int)seconds; } }; ///////////////// /////sample////// ///////////////// /* #include "mbed.h" #include "GPS_interrupt.h" Serial pc(USBTX, USBRX); RawSerial mygps(p9, p10); GPS_interrupt gps(&mygps, 9600); int main() { pc.baud(115200); mygps.baud(9600); pc.printf("%d Hz\r\n", SystemCoreClock ); wait(3.0); while(1){ double xy[2] = {0}; float utc[6] = {0}; gps.getPosition(xy); gps.getUTC(utc); 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]); pc.printf("lon %f\tlat %f\r\n",xy[0], xy[1]); wait(0.10); } } */ #endif