gps test 161222

Dependencies:   SDFileSystem mbed

Revision:
0:6cb9ece2cb7e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Dec 22 07:43:26 2016 +0000
@@ -0,0 +1,123 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+//sdFileSystem sd("sd");
+DigitalOut led1(LED1);
+DigitalIn cds(p29);
+PwmOut l_moter(p22);
+PwmOut r_moter(p21);
+PwmOut servo(p24);
+Serial gps(p13,p14);
+Serial gps2(p9,p10);
+Serial pc(USBTX,USBRX);
+
+time_t seconds = time(NULL) + (60 * 60 * 9); // JST
+struct tm *t = localtime(&seconds);
+
+char gps_c[250];
+int a,b,c,d,e,f,g;
+float h,i,j,k,l,m,n,servo_pul;
+char o,p;
+
+int sd_write(){
+               a=0;
+               pc.printf("sequence2\n");
+               
+               while(a <= 159)
+                {
+                   led1=1;
+                   servo_pul = servo_pul+0.0001;
+                   servo.pulsewidth(servo_pul);
+                   if(servo_pul >= 0.0022)
+                    { servo_pul=0.0008;}
+                   gps_c[a] = gps.getc();
+                   pc.printf("%d %c\n",a,gps_c[a]);
+                
+                   if(gps_c[a] == '\n')//改行まできたとき
+                     { gps_c[a+1] = '\0';
+                       a=0;
+                       pc.printf("gps_c = NULL\n");
+                     
+                   
+                       if(memcmp(gps_c,"$GPRMC",6) == 0)
+                         { sscanf(gps_c,"$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W",&h,&o,&i,&j,&k,&l,&m,&n);
+                           pc.printf("$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W \n",h,o,i,j,k,l,m,n);
+                           pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n",
+                           t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+                     
+                           //mkdir("/sd/gps", 0777);
+                           FILE *fp = fopen("/sd/gps.txt", "a");
+                           if(fp == NULL) {
+                                error("Could not open file for write\n");
+                                           } 
+
+                           fprintf(fp,"$GPRMC,%f,%c,%f,N,%f,E,%f,%f,%f,%f,W \n",h,o,i,j,k,l,m,n);
+                           fprintf(fp,"%04d/%02d/%02d %02d:%02d:%02d\n",
+                           t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+                           
+                           fclose(fp);
+                        }
+                        
+                        if(memcmp(gps_c,"$GPGGA",6) == 0)
+                         { sscanf(gps_c,"$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M",&h,&i,&j,&b,&c,&k,&l,&m);
+                           pc.printf("$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M\n",h,i,j,b,c,k,l,m);
+                           pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n",
+                           t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+                     
+                          // mkdir("/sd/gps", 0777);
+                           FILE *fp = fopen("/sd/gps.txt", "a");
+                           if(fp == NULL) {
+                                error("Could not open file for write\n");
+                                           } 
+
+                           fprintf(fp,"$GPGGA,%f,%f,N,%f,E,%d,%d,%f,%f,M,%f,M",h,i,j,b,c,k,l,m);
+                           fprintf(fp,"%04d/%02d/%02d %02d:%02d:%02d\n",
+                           t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+                           
+                           fclose(fp);
+                        }}
+                        
+                     
+                   
+                   else if(gps_c[a] == '$')
+                     { a=1;
+                       gps_c[0] = '$';
+                       pc.printf("gps_c = $\n");
+                     }
+               
+                   else
+                   { a++; }
+               }
+               led1=0;
+               return(0);
+}
+
+int main(void){
+               servo.period(0.020);
+               servo_pul=0;
+               pc.printf("%04d/%02d/%02d %02d:%02d:%02d\n",
+               t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+               
+               FILE *fp = fopen("/sd/gps.txt", "a");
+               if(fp == NULL) {error("Could not open file for write\n");} 
+               fprintf(fp,"start %04d/%02d/%02d %02d:%02d:%02d\n",
+               t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+               fclose(fp);            
+               
+               while(1){ 
+                        
+                        if(cds==0)
+                         {
+                           while(1){
+                                     pc.printf("sequence1 %04d/%02d/%02d %02d:%02d:%02d\n",
+                                     t->tm_year +1900, t->tm_mon+12, t->tm_mday+7, t->tm_hour+15, t->tm_min-54,t->tm_sec);
+
+                                     
+                                     sd_write();
+                                     wait(0.1);
+                                   }
+                         }
+                       } 
+                  
+}
\ No newline at end of file