a program i made a while back to log gps/accelerometer data

Dependencies:   FatFileSystem mbed

Committer:
Xach
Date:
Sat Sep 08 20:40:58 2012 +0000
Revision:
0:82a02991476c
a program i made a while back to log gps/accelerometer data

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Xach 0:82a02991476c 1 #include "mbed.h"
Xach 0:82a02991476c 2 #include "SerialBuffered.h"
Xach 0:82a02991476c 3 #include "globals.h"
Xach 0:82a02991476c 4 #include "SDFileSystem.h"
Xach 0:82a02991476c 5 #include "string.h"
Xach 0:82a02991476c 6
Xach 0:82a02991476c 7 #define SDWrite(STR) ((fp == NULL) ? fprintf(fp, STR) : errorled=1)
Xach 0:82a02991476c 8
Xach 0:82a02991476c 9 PwmOut Red(p25);
Xach 0:82a02991476c 10 PwmOut Green(p23);
Xach 0:82a02991476c 11 PwmOut Blue(p21);
Xach 0:82a02991476c 12
Xach 0:82a02991476c 13
Xach 0:82a02991476c 14 SDFileSystem sd(p11, p12, p13, p10, "sd");
Xach 0:82a02991476c 15 DigitalOut myled(LED1);
Xach 0:82a02991476c 16 DigitalOut genled(LED2);
Xach 0:82a02991476c 17 DigitalOut errorled(LED3);
Xach 0:82a02991476c 18 DigitalOut successled(LED4);
Xach 0:82a02991476c 19 Serial pc (USBTX,USBRX);
Xach 0:82a02991476c 20 //FILE *fp = fopen("/sd/foo.txt", "w");
Xach 0:82a02991476c 21
Xach 0:82a02991476c 22
Xach 0:82a02991476c 23
Xach 0:82a02991476c 24
Xach 0:82a02991476c 25 int main() {
Xach 0:82a02991476c 26 Red.period_us(100);
Xach 0:82a02991476c 27 Green.period_us(100);
Xach 0:82a02991476c 28 Blue.period_us(100);
Xach 0:82a02991476c 29 Red = 0;
Xach 0:82a02991476c 30 Green = 0;
Xach 0:82a02991476c 31 Blue = 0;
Xach 0:82a02991476c 32
Xach 0:82a02991476c 33 int flushCount = 0;
Xach 0:82a02991476c 34 int fileStartTime = 0;
Xach 0:82a02991476c 35
Xach 0:82a02991476c 36 errorled = 0;
Xach 0:82a02991476c 37 initAccel();
Xach 0:82a02991476c 38
Xach 0:82a02991476c 39 while (devid == 0) {
Xach 0:82a02991476c 40 initAccel();
Xach 0:82a02991476c 41 pc.printf("devid=%u\n",devid);
Xach 0:82a02991476c 42 }
Xach 0:82a02991476c 43 pc.printf("devid=%u\n",devid);
Xach 0:82a02991476c 44 fp = fopen("/sd/clbr.txt", "a");
Xach 0:82a02991476c 45 int j = 0;
Xach 0:82a02991476c 46 while (j<6400) {
Xach 0:82a02991476c 47 if (accelRdy) {
Xach 0:82a02991476c 48 accelRdy = false;
Xach 0:82a02991476c 49
Xach 0:82a02991476c 50 convertAccel;
Xach 0:82a02991476c 51 j++;
Xach 0:82a02991476c 52 }
Xach 0:82a02991476c 53 }
Xach 0:82a02991476c 54 pc.printf("NMEA data from LS20031:\n");
Xach 0:82a02991476c 55 char * pva_sent = (char *)calloc(255, sizeof(char));
Xach 0:82a02991476c 56 char * titlePath = (char *)calloc(255, sizeof(char));
Xach 0:82a02991476c 57
Xach 0:82a02991476c 58 SerialBuffered *b = new SerialBuffered( 256, p28, p27);
Xach 0:82a02991476c 59 b->baud( 56000 );
Xach 0:82a02991476c 60 //only need to do this once to set up rmc
Xach 0:82a02991476c 61 // char setup[] = "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*%x\r\n";
Xach 0:82a02991476c 62 // pc.printf("checksum : %x", checkSum(setup));
Xach 0:82a02991476c 63 // b->printf(setup, checkSum(setup));
Xach 0:82a02991476c 64
Xach 0:82a02991476c 65 b->startReadStrings('\n');
Xach 0:82a02991476c 66 b->setTimeout( 0.1 );//stupid , shouldnt need this
Xach 0:82a02991476c 67 char* line[32];
Xach 0:82a02991476c 68
Xach 0:82a02991476c 69 myled = 1;
Xach 0:82a02991476c 70 genled = 1;
Xach 0:82a02991476c 71
Xach 0:82a02991476c 72 while (b->stringsAvailable()<=0); // we need to wait for gps string
Xach 0:82a02991476c 73 char * firstMsg = b->getString();
Xach 0:82a02991476c 74 while (!NMEA_parse(firstMsg)) {
Xach 0:82a02991476c 75
Xach 0:82a02991476c 76 if (b->stringsAvailable()>0)
Xach 0:82a02991476c 77 firstMsg = b->getString();
Xach 0:82a02991476c 78 }
Xach 0:82a02991476c 79 while (b->stringsAvailable()>0) {
Xach 0:82a02991476c 80 firstMsg = b->getString();
Xach 0:82a02991476c 81 NMEA_parse(firstMsg);
Xach 0:82a02991476c 82 }
Xach 0:82a02991476c 83
Xach 0:82a02991476c 84 myled = 0;
Xach 0:82a02991476c 85 genled = 0;
Xach 0:82a02991476c 86
Xach 0:82a02991476c 87 fileStartTime = (int)timeG/10000;
Xach 0:82a02991476c 88 sprintf (titlePath, "/sd/%i_%i.txt",(int)date/10000 , (int)timeG/10000);
Xach 0:82a02991476c 89 pc.printf(titlePath);
Xach 0:82a02991476c 90 FILE *fp = fopen(titlePath, "a");
Xach 0:82a02991476c 91
Xach 0:82a02991476c 92 while (fp == NULL) {
Xach 0:82a02991476c 93 wait (1);
Xach 0:82a02991476c 94 errorled = 1;
Xach 0:82a02991476c 95 successled = 1;
Xach 0:82a02991476c 96 genled = 1;
Xach 0:82a02991476c 97 myled = 1;
Xach 0:82a02991476c 98 wait(1);
Xach 0:82a02991476c 99 errorled = 0;
Xach 0:82a02991476c 100 successled = 0;
Xach 0:82a02991476c 101 genled = 0;
Xach 0:82a02991476c 102 myled = 0;
Xach 0:82a02991476c 103 if (b->stringsAvailable()>0) {
Xach 0:82a02991476c 104 firstMsg = b->getString();
Xach 0:82a02991476c 105 NMEA_parse(firstMsg);
Xach 0:82a02991476c 106 }
Xach 0:82a02991476c 107 fileStartTime = (int)timeG/10000;
Xach 0:82a02991476c 108 sprintf (titlePath, "/sd/%i_%i.txt",(int)date/10000 , (int)timeG/10000);
Xach 0:82a02991476c 109 fp = fopen(titlePath, "a");
Xach 0:82a02991476c 110 }
Xach 0:82a02991476c 111
Xach 0:82a02991476c 112 pc.printf(titlePath);
Xach 0:82a02991476c 113 fprintf(fp,"break,\n");
Xach 0:82a02991476c 114
Xach 0:82a02991476c 115 timer.start();
Xach 0:82a02991476c 116 while (1) {
Xach 0:82a02991476c 117 if (accelRdy) {
Xach 0:82a02991476c 118 accelRdy = false;
Xach 0:82a02991476c 119 convertAccel();
Xach 0:82a02991476c 120 sprintf (pva_sent,"A,%i,%f,%f,%f\n",accelTime,xaxis,yaxis,zaxis);
Xach 0:82a02991476c 121 // sprintf (pva_sent,"%f,%f,%f\n", xaxis,yaxis,zaxis);
Xach 0:82a02991476c 122 // pc.printf(pva_sent);
Xach 0:82a02991476c 123 fprintf(fp,pva_sent);
Xach 0:82a02991476c 124 Red = abs(yaxis);
Xach 0:82a02991476c 125 Blue = abs(zaxis);
Xach 0:82a02991476c 126 Green = abs(xaxis);
Xach 0:82a02991476c 127 successled = 1;
Xach 0:82a02991476c 128 }
Xach 0:82a02991476c 129
Xach 0:82a02991476c 130 int i= 0;
Xach 0:82a02991476c 131 while (b->stringsAvailable()>0) {
Xach 0:82a02991476c 132 updateAccel();
Xach 0:82a02991476c 133 timer.reset();
Xach 0:82a02991476c 134 if (i<STRING_BUFFERS)
Xach 0:82a02991476c 135 line[i++] = b->getString();
Xach 0:82a02991476c 136 else
Xach 0:82a02991476c 137 break;
Xach 0:82a02991476c 138 }
Xach 0:82a02991476c 139
Xach 0:82a02991476c 140 // pc.printf("\n\navailable:%i\n", i); //if i>1 it would be a good idea to throw an error
Xach 0:82a02991476c 141
Xach 0:82a02991476c 142 while (i>=1) {
Xach 0:82a02991476c 143 flushCount++;
Xach 0:82a02991476c 144 if (flushCount > 150) {
Xach 0:82a02991476c 145
Xach 0:82a02991476c 146 flushCount = 0;
Xach 0:82a02991476c 147 fclose(fp);
Xach 0:82a02991476c 148
Xach 0:82a02991476c 149 if (fileStartTime - (int)timeG/10000 != 0) {
Xach 0:82a02991476c 150 fileStartTime = (int)timeG/10000;
Xach 0:82a02991476c 151 if (date != 0)
Xach 0:82a02991476c 152 sprintf (titlePath, "/sd/%i_%i.txt",(int)date/10000 , (int)timeG/10000);
Xach 0:82a02991476c 153 }
Xach 0:82a02991476c 154 fp = fopen(titlePath, "a");
Xach 0:82a02991476c 155 while (fp == NULL) {
Xach 0:82a02991476c 156 wait (1);
Xach 0:82a02991476c 157 errorled = 1;
Xach 0:82a02991476c 158 successled = 1;
Xach 0:82a02991476c 159 genled = 1;
Xach 0:82a02991476c 160 myled = 1;
Xach 0:82a02991476c 161 wait(1);
Xach 0:82a02991476c 162 errorled = 0;
Xach 0:82a02991476c 163 successled = 0;
Xach 0:82a02991476c 164 genled = 0;
Xach 0:82a02991476c 165 myled = 0;
Xach 0:82a02991476c 166
Xach 0:82a02991476c 167 fp = fopen(titlePath, "a");
Xach 0:82a02991476c 168 }
Xach 0:82a02991476c 169
Xach 0:82a02991476c 170 }
Xach 0:82a02991476c 171 NMEA_parse(line[--i]);
Xach 0:82a02991476c 172
Xach 0:82a02991476c 173 //sprintf (pva_sent,"\ngot line:%i\nDate:%f Time:%f Lat:%f Lon:%f Speed:%f Ax:%f Ay:%f Az:%f", i ,date,timeG,latitude,longitude,speed_knotts,xaxis,yaxis,zaxis);
Xach 0:82a02991476c 174 sprintf (pva_sent,"G,%i,%f,%f,%f,%f,%f,%f,%f\n",(int)date,timeG,latitude,longitude,speed_knotts,xaxis,yaxis,zaxis);
Xach 0:82a02991476c 175 // pc.printf(pva_sent);
Xach 0:82a02991476c 176 successled = 1;
Xach 0:82a02991476c 177 fprintf(fp,pva_sent);
Xach 0:82a02991476c 178 successled = 0;
Xach 0:82a02991476c 179 //pc.printf("A X=%f, Y=%f, Z=%f\n",xaxis,yaxis,zaxis);
Xach 0:82a02991476c 180
Xach 0:82a02991476c 181 }
Xach 0:82a02991476c 182
Xach 0:82a02991476c 183
Xach 0:82a02991476c 184 }
Xach 0:82a02991476c 185 }
Xach 0:82a02991476c 186
Xach 0:82a02991476c 187
Xach 0:82a02991476c 188