gpsのテスト

Dependencies:   SDFileSystem mbed

Fork of 2bk0203_GPS_Logger01 by Takeuchi Kouichi

Committer:
Joeatsumi
Date:
Thu Feb 08 09:59:50 2018 +0000
Revision:
1:23d22ebf52c0
Parent:
0:c7278239bae6
2018/2/8/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeuchi 0:c7278239bae6 1 //GPS GT-720F Logger01
takeuchi 0:c7278239bae6 2 #include "mbed.h"
Joeatsumi 1:23d22ebf52c0 3
Joeatsumi 1:23d22ebf52c0 4 #include "SDFileSystem.h"
Joeatsumi 1:23d22ebf52c0 5 SDFileSystem sd(p5,p6,p7,p8,"sd");
Joeatsumi 1:23d22ebf52c0 6 FILE* fp;
Joeatsumi 1:23d22ebf52c0 7
takeuchi 0:c7278239bae6 8
takeuchi 0:c7278239bae6 9 #define ON 1
takeuchi 0:c7278239bae6 10 #define OFF 0
takeuchi 0:c7278239bae6 11
takeuchi 0:c7278239bae6 12 DigitalOut mled0(LED1);
takeuchi 0:c7278239bae6 13 DigitalOut mled1(LED2);
Joeatsumi 1:23d22ebf52c0 14 DigitalIn sw1(p15);
Joeatsumi 1:23d22ebf52c0 15
Joeatsumi 1:23d22ebf52c0 16 Serial pc(USBTX, USBRX); // tx, rx
takeuchi 0:c7278239bae6 17
Joeatsumi 1:23d22ebf52c0 18
Joeatsumi 1:23d22ebf52c0 19
Joeatsumi 1:23d22ebf52c0 20
Joeatsumi 1:23d22ebf52c0 21
takeuchi 0:c7278239bae6 22 Serial gps(p9,p10);
Joeatsumi 1:23d22ebf52c0 23 //LocalFileSystem local("local");
takeuchi 0:c7278239bae6 24 Ticker flipper;
Joeatsumi 1:23d22ebf52c0 25
takeuchi 0:c7278239bae6 26 float g_hokui,g_tokei;
takeuchi 0:c7278239bae6 27 int fp_count=0;
takeuchi 0:c7278239bae6 28
Joeatsumi 1:23d22ebf52c0 29 int h_time=0,m_time=0,s_time=0;
Joeatsumi 1:23d22ebf52c0 30
takeuchi 0:c7278239bae6 31 void gps_rec() {
takeuchi 0:c7278239bae6 32 mled0=ON;
Joeatsumi 1:23d22ebf52c0 33 if(fp == NULL) {
Joeatsumi 1:23d22ebf52c0 34 error("Could not open file for write\n");
Joeatsumi 1:23d22ebf52c0 35 }
Joeatsumi 1:23d22ebf52c0 36
Joeatsumi 1:23d22ebf52c0 37 fprintf(fp,"%4.6f,%3.6f\r\n",g_tokei,g_hokui);
Joeatsumi 1:23d22ebf52c0 38
Joeatsumi 1:23d22ebf52c0 39
takeuchi 0:c7278239bae6 40 mled0=OFF;
takeuchi 0:c7278239bae6 41 fp_count++;
Joeatsumi 1:23d22ebf52c0 42
Joeatsumi 1:23d22ebf52c0 43
takeuchi 0:c7278239bae6 44 }
takeuchi 0:c7278239bae6 45
takeuchi 0:c7278239bae6 46 int main() {
takeuchi 0:c7278239bae6 47
takeuchi 0:c7278239bae6 48 char c;
takeuchi 0:c7278239bae6 49 int i,rlock=0,stn=0;
takeuchi 0:c7278239bae6 50 char gps_data[256];
takeuchi 0:c7278239bae6 51 char ns,ew;
takeuchi 0:c7278239bae6 52 float time,hokui,tokei;
takeuchi 0:c7278239bae6 53
takeuchi 0:c7278239bae6 54 float d_hokui,m_hokui,d_tokei,m_tokei;
takeuchi 0:c7278239bae6 55 int h_time=0,m_time=0,s_time=0;
takeuchi 0:c7278239bae6 56 int rec_flag=0;
takeuchi 0:c7278239bae6 57
takeuchi 0:c7278239bae6 58 gps.baud(9600);
Joeatsumi 1:23d22ebf52c0 59 fp = fopen("/sd/test.csv", "w");
Joeatsumi 1:23d22ebf52c0 60 // wait(1.0);
Joeatsumi 1:23d22ebf52c0 61
Joeatsumi 1:23d22ebf52c0 62
Joeatsumi 1:23d22ebf52c0 63
Joeatsumi 1:23d22ebf52c0 64 flipper.attach(&gps_rec, 1.0);
Joeatsumi 1:23d22ebf52c0 65
Joeatsumi 1:23d22ebf52c0 66
Joeatsumi 1:23d22ebf52c0 67 // fp = fopen("/sd/test.csv", "w");
Joeatsumi 1:23d22ebf52c0 68 // fp=fopen("/local/GPS.csv","w");
Joeatsumi 1:23d22ebf52c0 69 // fp=fopen("/local/GPS.csv","w");
Joeatsumi 1:23d22ebf52c0 70 //fclose(fp);
Joeatsumi 1:23d22ebf52c0 71 //free(fp);
Joeatsumi 1:23d22ebf52c0 72
Joeatsumi 1:23d22ebf52c0 73 // fprintf(fp,"\n");
Joeatsumi 1:23d22ebf52c0 74 //wait(1.0);
takeuchi 0:c7278239bae6 75
takeuchi 0:c7278239bae6 76 while (1) {
Joeatsumi 1:23d22ebf52c0 77 /*
Joeatsumi 1:23d22ebf52c0 78 pc.putc(gps.getc());
Joeatsumi 1:23d22ebf52c0 79 */
Joeatsumi 1:23d22ebf52c0 80
Joeatsumi 1:23d22ebf52c0 81 if(sw1!=1){
Joeatsumi 1:23d22ebf52c0 82
takeuchi 0:c7278239bae6 83 fclose(fp);
Joeatsumi 1:23d22ebf52c0 84
takeuchi 0:c7278239bae6 85 exit(1);
takeuchi 0:c7278239bae6 86 }
takeuchi 0:c7278239bae6 87
takeuchi 0:c7278239bae6 88 i=0;
takeuchi 0:c7278239bae6 89 while(gps.getc()!='$'){
takeuchi 0:c7278239bae6 90 }
takeuchi 0:c7278239bae6 91
Joeatsumi 1:23d22ebf52c0 92
takeuchi 0:c7278239bae6 93 while( (gps_data[i]=gps.getc()) != '\r'){
takeuchi 0:c7278239bae6 94 i++;
takeuchi 0:c7278239bae6 95 if(i==256){
Joeatsumi 1:23d22ebf52c0 96
takeuchi 0:c7278239bae6 97 i=255;
takeuchi 0:c7278239bae6 98 break;
takeuchi 0:c7278239bae6 99 }
takeuchi 0:c7278239bae6 100 }
takeuchi 0:c7278239bae6 101 gps_data[i]='\0';
takeuchi 0:c7278239bae6 102
takeuchi 0:c7278239bae6 103 //test
takeuchi 0:c7278239bae6 104 /* Test data
takeuchi 0:c7278239bae6 105 rlock=1;
takeuchi 0:c7278239bae6 106 stn=3;
takeuchi 0:c7278239bae6 107 hokui=3532.25024; //=>35.537502
takeuchi 0:c7278239bae6 108 tokei=13751.86820;//=>137.864471
takeuchi 0:c7278239bae6 109 time=114107.046;
takeuchi 0:c7278239bae6 110 */
takeuchi 0:c7278239bae6 111 if( sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d",&time,&hokui,&ns,&tokei,&ew,&rlock,&stn) >= 1){
takeuchi 0:c7278239bae6 112 if(rlock >= 1){
takeuchi 0:c7278239bae6 113
takeuchi 0:c7278239bae6 114 //hokui
takeuchi 0:c7278239bae6 115 d_hokui=int(hokui/100);
takeuchi 0:c7278239bae6 116 m_hokui=(hokui-d_hokui*100)/60;
takeuchi 0:c7278239bae6 117 g_hokui=d_hokui+m_hokui;
takeuchi 0:c7278239bae6 118 //tokei
takeuchi 0:c7278239bae6 119 d_tokei=int(tokei/100);
takeuchi 0:c7278239bae6 120 m_tokei=(tokei-d_tokei*100)/60;
takeuchi 0:c7278239bae6 121 g_tokei=d_tokei+m_tokei;
takeuchi 0:c7278239bae6 122 //g_hokui=int(hokui/100)+(hokui-int(hokui/100))/60;
takeuchi 0:c7278239bae6 123 //g_tokei=int(tokei/100)+(tokei-int(tokei/100))/60;
takeuchi 0:c7278239bae6 124
takeuchi 0:c7278239bae6 125 //time set
takeuchi 0:c7278239bae6 126 h_time=int(time/10000);
takeuchi 0:c7278239bae6 127 m_time=int((time-h_time*10000)/100);
takeuchi 0:c7278239bae6 128 s_time=int(time-h_time*10000-m_time*100);
takeuchi 0:c7278239bae6 129 h_time=h_time+9;//UTC =>JST
takeuchi 0:c7278239bae6 130
takeuchi 0:c7278239bae6 131 // Record start
takeuchi 0:c7278239bae6 132 if(rec_flag==0){
Joeatsumi 1:23d22ebf52c0 133
Joeatsumi 1:23d22ebf52c0 134 // flipper.attach(&gps_rec, 1.0);
Joeatsumi 1:23d22ebf52c0 135
takeuchi 0:c7278239bae6 136 rec_flag=1;
Joeatsumi 1:23d22ebf52c0 137 // fp=fopen("/local/GPS.csv","w");
Joeatsumi 1:23d22ebf52c0 138 // fprintf(fp,"%2d,%2d,%2d,%6.6f,%5.6f\r\n",h_time,m_time,s_time,g_tokei,g_hokui);
Joeatsumi 1:23d22ebf52c0 139 //fclose(fp);
Joeatsumi 1:23d22ebf52c0 140 //free(fp);
Joeatsumi 1:23d22ebf52c0 141
takeuchi 0:c7278239bae6 142 mled0=ON;
takeuchi 0:c7278239bae6 143 }
Joeatsumi 1:23d22ebf52c0 144
takeuchi 0:c7278239bae6 145 else{
Joeatsumi 1:23d22ebf52c0 146 //fp=fopen("/local/GPS.csv","w");
Joeatsumi 1:23d22ebf52c0 147 // flipper.detach();
takeuchi 0:c7278239bae6 148 rec_flag=0;
Joeatsumi 1:23d22ebf52c0 149
Joeatsumi 1:23d22ebf52c0 150 }//else
takeuchi 0:c7278239bae6 151 }
takeuchi 0:c7278239bae6 152 }//if
takeuchi 0:c7278239bae6 153 }//while
takeuchi 0:c7278239bae6 154 }//main
takeuchi 0:c7278239bae6 155
takeuchi 0:c7278239bae6 156
takeuchi 0:c7278239bae6 157