Data logger with SD card storage and RTC

Dependencies:   SDFileSystem SoftSerial ds3231 mbed

Committer:
dexterg
Date:
Mon Mar 07 21:01:21 2016 +0000
Revision:
12:aea46fad46b4
Parent:
11:ce12856c2a51
String format changed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dexterg 0:e0a8ea9b571e 1 #include "mbed.h"
dexterg 0:e0a8ea9b571e 2 #include "SDFileSystem.h"
dexterg 0:e0a8ea9b571e 3 #include "SoftSerial.h"
dexterg 1:ab74071de2c8 4 #include "Serial.h"
dexterg 0:e0a8ea9b571e 5 #include "ds3231.h"
dexterg 1:ab74071de2c8 6 #include <string>
dexterg 0:e0a8ea9b571e 7 DigitalOut externalTrig(P0_17);
dexterg 0:e0a8ea9b571e 8 DigitalOut myled(LED1);
dexterg 1:ab74071de2c8 9
dexterg 1:ab74071de2c8 10
dexterg 0:e0a8ea9b571e 11 //Serial usbPC(P0_19, P0_18);
dexterg 0:e0a8ea9b571e 12
dexterg 0:e0a8ea9b571e 13 InterruptIn button(P0_23);
dexterg 0:e0a8ea9b571e 14 InterruptIn button2(P0_16);
dexterg 0:e0a8ea9b571e 15
dexterg 0:e0a8ea9b571e 16 Serial fpga(P0_19, P0_18);//must change to new pins
dexterg 0:e0a8ea9b571e 17
dexterg 1:ab74071de2c8 18 SoftSerial serial_t0(P0_11,P0_12);
dexterg 1:ab74071de2c8 19
dexterg 0:e0a8ea9b571e 20 Ds3231 rtc(P0_5, P0_4);///must change to new pins
dexterg 0:e0a8ea9b571e 21
dexterg 1:ab74071de2c8 22 Timer t;
dexterg 1:ab74071de2c8 23 int timeStart;
dexterg 1:ab74071de2c8 24 int timeCurrent;
dexterg 1:ab74071de2c8 25
dexterg 1:ab74071de2c8 26 SDFileSystem sd(P0_9, P0_8, P0_10, P0_2, "sd");
dexterg 2:e0b3cb47b4ff 27
dexterg 0:e0a8ea9b571e 28 float lifeTime = 0;
dexterg 0:e0a8ea9b571e 29 float oTwo = 0;
dexterg 0:e0a8ea9b571e 30 float peak = 0;
dexterg 0:e0a8ea9b571e 31 float trough = 0;
dexterg 0:e0a8ea9b571e 32 float ancil = 0;
dexterg 2:e0b3cb47b4ff 33 float label = 0;
dexterg 2:e0b3cb47b4ff 34 float pressure = 0;
dexterg 2:e0b3cb47b4ff 35 float temperature = 0;
dexterg 2:e0b3cb47b4ff 36
dexterg 9:9fd07a49c2ed 37
dexterg 9:9fd07a49c2ed 38 char dayStr[2+1];
dexterg 9:9fd07a49c2ed 39 char monthStr[2+1];
dexterg 9:9fd07a49c2ed 40 char yearStr[4+1];
dexterg 9:9fd07a49c2ed 41 char hourStr[2+1];
dexterg 9:9fd07a49c2ed 42 char minStr[2+1];
dexterg 9:9fd07a49c2ed 43 char secStr[2+1];
dexterg 9:9fd07a49c2ed 44
dexterg 11:ce12856c2a51 45 char tbuff[200];
dexterg 0:e0a8ea9b571e 46 char pbuff[250];
dexterg 0:e0a8ea9b571e 47 void bPush()
dexterg 0:e0a8ea9b571e 48 {
dexterg 0:e0a8ea9b571e 49 time_t epoch_time;
dexterg 0:e0a8ea9b571e 50 epoch_time = rtc.get_epoch();
dexterg 0:e0a8ea9b571e 51
dexterg 12:aea46fad46b4 52 strftime(tbuff, 32, "%Y-%m-%d %H:%M:%S", localtime(&epoch_time));
dexterg 0:e0a8ea9b571e 53
dexterg 0:e0a8ea9b571e 54 FILE *fp = fopen("/sd/d.txt", "a");
dexterg 0:e0a8ea9b571e 55 if(fp == NULL) {
dexterg 0:e0a8ea9b571e 56 } else {
dexterg 12:aea46fad46b4 57 fprintf(fp, "%s, %f,%f,%f,%f,%f \r\n",tbuff,lifeTime,oTwo,peak,trough,ancil);
dexterg 0:e0a8ea9b571e 58 }
dexterg 0:e0a8ea9b571e 59 fclose(fp);
dexterg 0:e0a8ea9b571e 60 fpga.printf("lifetime: %f o2: %f peak: %f trough: %f ancil: %f ",lifeTime,oTwo,peak,trough,ancil);
dexterg 0:e0a8ea9b571e 61 }
dexterg 0:e0a8ea9b571e 62
dexterg 0:e0a8ea9b571e 63 void bPush2()
dexterg 0:e0a8ea9b571e 64 {
dexterg 0:e0a8ea9b571e 65 time_t epoch_time;
dexterg 0:e0a8ea9b571e 66 epoch_time = rtc.get_epoch();
dexterg 0:e0a8ea9b571e 67
dexterg 0:e0a8ea9b571e 68 externalTrig=1;
dexterg 0:e0a8ea9b571e 69 wait(0.1);
dexterg 0:e0a8ea9b571e 70 externalTrig=0;
dexterg 0:e0a8ea9b571e 71
dexterg 0:e0a8ea9b571e 72 //strftime(tbuff, 32, "%X %x", localtime(&epoch_time));
dexterg 0:e0a8ea9b571e 73 //printf("%s", tbuff);
dexterg 0:e0a8ea9b571e 74 }
dexterg 0:e0a8ea9b571e 75 const int buffer_size = 255;
dexterg 0:e0a8ea9b571e 76 char fpgaBuffer[buffer_size+1];
dexterg 0:e0a8ea9b571e 77 volatile int rx_in=0;
dexterg 0:e0a8ea9b571e 78 volatile int rx_out=0;
dexterg 0:e0a8ea9b571e 79 int newData=0;
dexterg 0:e0a8ea9b571e 80
dexterg 1:ab74071de2c8 81 char softBuffer[buffer_size+1];
dexterg 5:159a0b7172c8 82 char rBuffer[255];
dexterg 1:ab74071de2c8 83 volatile int rxSoftIn=0;
dexterg 1:ab74071de2c8 84 volatile int rxSoftOut=0;
dexterg 1:ab74071de2c8 85 int newSoftData=0;
dexterg 1:ab74071de2c8 86
dexterg 1:ab74071de2c8 87 int setT0 = 0;
dexterg 1:ab74071de2c8 88 int setPre0=0;
dexterg 1:ab74071de2c8 89 int setM=0;
dexterg 1:ab74071de2c8 90 int setC=0;
dexterg 6:facc3b44ab4e 91 int strN;
dexterg 6:facc3b44ab4e 92 int setSend=0;
dexterg 5:159a0b7172c8 93 void serial_t0_RxInt()
dexterg 5:159a0b7172c8 94 {
dexterg 1:ab74071de2c8 95 while ((serial_t0.readable()) && (((rxSoftIn + 1) % buffer_size) != rxSoftOut)) {
dexterg 1:ab74071de2c8 96 softBuffer[rxSoftIn] = serial_t0.getc();
dexterg 1:ab74071de2c8 97 rxSoftIn = (rxSoftIn + 1) % buffer_size;
dexterg 1:ab74071de2c8 98 }
dexterg 1:ab74071de2c8 99 softBuffer[rxSoftIn]='\0';
dexterg 1:ab74071de2c8 100 newSoftData=1;
dexterg 1:ab74071de2c8 101 }
dexterg 1:ab74071de2c8 102
dexterg 0:e0a8ea9b571e 103 void fpga_Rx_interrupt()
dexterg 0:e0a8ea9b571e 104 {
dexterg 0:e0a8ea9b571e 105 wait(0.1);
dexterg 0:e0a8ea9b571e 106 while ((fpga.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
dexterg 0:e0a8ea9b571e 107 fpgaBuffer[rx_in] = fpga.getc();
dexterg 0:e0a8ea9b571e 108 rx_in = (rx_in + 1) % buffer_size;
dexterg 0:e0a8ea9b571e 109 }
dexterg 0:e0a8ea9b571e 110
dexterg 0:e0a8ea9b571e 111
dexterg 0:e0a8ea9b571e 112 ///convert to Shijie datagram
dexterg 5:159a0b7172c8 113 if(rx_in<14) {
dexterg 2:e0b3cb47b4ff 114 if(fpgaBuffer[2]!=0xFF) {
dexterg 2:e0b3cb47b4ff 115 lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 116 oTwo = (10 * (fpgaBuffer[2] >> 4)) + (fpgaBuffer[2] & 15)+(((10.0 * (fpgaBuffer[3] >> 4)) + 1.0*(fpgaBuffer[3] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 117 peak = (256 * (fpgaBuffer[4]))+fpgaBuffer[5];
dexterg 2:e0b3cb47b4ff 118 trough = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
dexterg 2:e0b3cb47b4ff 119 ancil = (10 * (fpgaBuffer[8] >> 4)) + (fpgaBuffer[8] & 15)+(((10.0 * (fpgaBuffer[9] >> 4)) + 1.0*(fpgaBuffer[9] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 120 // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[2],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[5],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[8],fpgaBuffer[9]);
dexterg 2:e0b3cb47b4ff 121 } else {
dexterg 2:e0b3cb47b4ff 122 lifeTime = (10 * (fpgaBuffer[0] >> 4)) + (fpgaBuffer[0] & 15)+(((10.0 * (fpgaBuffer[1] >> 4)) + 1.0*(fpgaBuffer[1] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 123 oTwo = (10 * (fpgaBuffer[3] >> 4)) + (fpgaBuffer[3] & 15)+(((10.0 * (fpgaBuffer[4] >> 4)) + 1.0*(fpgaBuffer[4] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 124 peak = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
dexterg 2:e0b3cb47b4ff 125 trough = (256 * (fpgaBuffer[9]))+fpgaBuffer[10];
dexterg 2:e0b3cb47b4ff 126 ancil = (10 * (fpgaBuffer[12] >> 4)) + (fpgaBuffer[12] & 15)+(((10.0 * (fpgaBuffer[13] >> 4)) + 1.0*(fpgaBuffer[13] & 15))/100.0);
dexterg 2:e0b3cb47b4ff 127 // DEBUG fpga.printf("%x %x %x %x %x %x %x %x %x %x",fpgaBuffer[0],fpgaBuffer[1],fpgaBuffer[3],fpgaBuffer[4],fpgaBuffer[6],fpgaBuffer[7],fpgaBuffer[9],fpgaBuffer[10],fpgaBuffer[12],fpgaBuffer[13]);
dexterg 2:e0b3cb47b4ff 128 }
dexterg 5:159a0b7172c8 129 } else {
dexterg 5:159a0b7172c8 130
dexterg 5:159a0b7172c8 131 if(rx_in<18) {
dexterg 5:159a0b7172c8 132
dexterg 5:159a0b7172c8 133 label = (256 * (fpgaBuffer[0]))+fpgaBuffer[1];
dexterg 5:159a0b7172c8 134 lifeTime = (10 * (fpgaBuffer[2] >> 4)) + (fpgaBuffer[2] & 15)+(((10.0 * (fpgaBuffer[3] >> 4)) + 1.0*(fpgaBuffer[3] & 15))/100.0);
dexterg 5:159a0b7172c8 135 oTwo = (10 * (fpgaBuffer[4] >> 4)) + (fpgaBuffer[4] & 15)+(((10.0 * (fpgaBuffer[5] >> 4)) + 1.0*(fpgaBuffer[5] & 15))/100.0);
dexterg 5:159a0b7172c8 136 peak = (256 * (fpgaBuffer[6]))+fpgaBuffer[7];
dexterg 5:159a0b7172c8 137 trough = (256 * (fpgaBuffer[8]))+fpgaBuffer[9];
dexterg 5:159a0b7172c8 138 pressure = (256 * (fpgaBuffer[10]))+fpgaBuffer[11];
dexterg 5:159a0b7172c8 139 temperature = (10 * (fpgaBuffer[12] & 15)) + (fpgaBuffer[13] >> 4) + (1.0*(fpgaBuffer[13] & 15)/10 );
dexterg 5:159a0b7172c8 140
dexterg 5:159a0b7172c8 141 } else {
dexterg 5:159a0b7172c8 142
dexterg 5:159a0b7172c8 143 label = (256 * (fpgaBuffer[0]))+fpgaBuffer[1];
dexterg 5:159a0b7172c8 144 lifeTime = (10 * (fpgaBuffer[3] >> 4)) + (fpgaBuffer[3] & 15)+(((10.0 * (fpgaBuffer[4] >> 4)) + 1.0*(fpgaBuffer[4] & 15))/100.0);
dexterg 5:159a0b7172c8 145 oTwo = (10 * (fpgaBuffer[6] >> 4)) + (fpgaBuffer[6] & 15)+(((10.0 * (fpgaBuffer[7] >> 4)) + 1.0*(fpgaBuffer[7] & 15))/100.0);
dexterg 5:159a0b7172c8 146 peak = (256 * (fpgaBuffer[9]))+fpgaBuffer[10];
dexterg 5:159a0b7172c8 147 trough = (256 * (fpgaBuffer[12]))+fpgaBuffer[13];
dexterg 5:159a0b7172c8 148 pressure = (256 * (fpgaBuffer[15]))+fpgaBuffer[16];
dexterg 5:159a0b7172c8 149 temperature = (10 * (fpgaBuffer[18] & 15)) + (fpgaBuffer[19] >> 4) + (1.0*(fpgaBuffer[19] & 15)/10 );
dexterg 4:3b055e2a9f4e 150 }
dexterg 0:e0a8ea9b571e 151 }
dexterg 5:159a0b7172c8 152
dexterg 0:e0a8ea9b571e 153 newData=1;
dexterg 0:e0a8ea9b571e 154 rx_in=0;
dexterg 0:e0a8ea9b571e 155 return;
dexterg 0:e0a8ea9b571e 156 }
dexterg 0:e0a8ea9b571e 157 int createFile=0;
dexterg 1:ab74071de2c8 158 char* strings;
dexterg 1:ab74071de2c8 159 string s1;
dexterg 1:ab74071de2c8 160 string s2;
dexterg 5:159a0b7172c8 161 int r;
dexterg 1:ab74071de2c8 162 int msgCode;
dexterg 1:ab74071de2c8 163 int msgValue;
dexterg 5:159a0b7172c8 164 int lineN;
dexterg 6:facc3b44ab4e 165 char * pch;
dexterg 6:facc3b44ab4e 166
dexterg 6:facc3b44ab4e 167
dexterg 9:9fd07a49c2ed 168 void SendSet()
dexterg 9:9fd07a49c2ed 169 {
dexterg 6:facc3b44ab4e 170 FILE *fr = fopen("/sd/set.txt", "r");
dexterg 6:facc3b44ab4e 171 if(fr == NULL) {
dexterg 6:facc3b44ab4e 172 serial_t0.printf("Could not open file for read");
dexterg 6:facc3b44ab4e 173 } else {
dexterg 6:facc3b44ab4e 174 lineN=0;
dexterg 6:facc3b44ab4e 175 if( fgets(rBuffer , 200 , fr) != NULL ) {
dexterg 7:31cf052463a0 176 pch = strtok (rBuffer,",");
dexterg 6:facc3b44ab4e 177 strN=0;
dexterg 9:9fd07a49c2ed 178 while (pch != NULL) {
dexterg 9:9fd07a49c2ed 179 if(strN==0) {
dexterg 9:9fd07a49c2ed 180 setT0 = atoi(pch);
dexterg 9:9fd07a49c2ed 181 }
dexterg 9:9fd07a49c2ed 182 if(strN==1) {
dexterg 9:9fd07a49c2ed 183 setPre0 =atoi(pch);
dexterg 9:9fd07a49c2ed 184 }
dexterg 9:9fd07a49c2ed 185 if(strN==2) {
dexterg 9:9fd07a49c2ed 186 setM=atoi(pch);
dexterg 9:9fd07a49c2ed 187 }
dexterg 9:9fd07a49c2ed 188 if(strN==3) {
dexterg 9:9fd07a49c2ed 189 setC =atoi(pch);
dexterg 9:9fd07a49c2ed 190 }
dexterg 6:facc3b44ab4e 191 pch = strtok (NULL, ",");
dexterg 6:facc3b44ab4e 192 strN++;
dexterg 6:facc3b44ab4e 193 }
dexterg 8:4da30196d571 194 //serial_t0.printf("%d,%d,%d,%d\n",setT0,setPre0,setM,setC);
dexterg 7:31cf052463a0 195 rBuffer[0] = setT0/255; //LSB
dexterg 7:31cf052463a0 196 rBuffer[1] = setT0%255; //MSB
dexterg 7:31cf052463a0 197 rBuffer[2] = setPre0/255; //LSB
dexterg 7:31cf052463a0 198 rBuffer[3] = setPre0%255; //MSB
dexterg 7:31cf052463a0 199 rBuffer[4] = setM/255; //LSB
dexterg 7:31cf052463a0 200 rBuffer[5] = setM%255; //MSB
dexterg 7:31cf052463a0 201 rBuffer[6] = setC/255; //LSB
dexterg 7:31cf052463a0 202 rBuffer[7] = setC%255; //MSB
dexterg 7:31cf052463a0 203 rBuffer[8] = '\0';
dexterg 7:31cf052463a0 204 fpga.putc(rBuffer[0]);
dexterg 7:31cf052463a0 205 fpga.putc(rBuffer[1]);
dexterg 7:31cf052463a0 206 fpga.putc(rBuffer[2]);
dexterg 7:31cf052463a0 207 fpga.putc(rBuffer[3]);
dexterg 7:31cf052463a0 208 fpga.putc(rBuffer[4]);
dexterg 7:31cf052463a0 209 fpga.putc(rBuffer[5]);
dexterg 7:31cf052463a0 210 fpga.putc(rBuffer[6]);
dexterg 7:31cf052463a0 211 fpga.putc(rBuffer[7]);
dexterg 6:facc3b44ab4e 212 }
dexterg 6:facc3b44ab4e 213 }
dexterg 6:facc3b44ab4e 214 fclose(fr);
dexterg 9:9fd07a49c2ed 215
dexterg 6:facc3b44ab4e 216 }
dexterg 6:facc3b44ab4e 217
dexterg 0:e0a8ea9b571e 218 int main()
dexterg 0:e0a8ea9b571e 219 {
dexterg 1:ab74071de2c8 220 //Comment below to test without RTC and SD
dexterg 0:e0a8ea9b571e 221 externalTrig=0;
dexterg 12:aea46fad46b4 222 //button.mode(PullUp);
dexterg 12:aea46fad46b4 223 //button.fall(&bPush);
dexterg 0:e0a8ea9b571e 224 button2.mode(PullUp);
dexterg 0:e0a8ea9b571e 225 button2.fall(&bPush2);
dexterg 5:159a0b7172c8 226
dexterg 0:e0a8ea9b571e 227 fpga.attach(&fpga_Rx_interrupt,Serial::RxIrq);
dexterg 0:e0a8ea9b571e 228 FILE *fpo = fopen("/sd/d.txt", "r");
dexterg 0:e0a8ea9b571e 229 if(fpo == NULL) {
dexterg 0:e0a8ea9b571e 230 createFile=1;
dexterg 0:e0a8ea9b571e 231 }
dexterg 5:159a0b7172c8 232 fclose(fpo);
dexterg 6:facc3b44ab4e 233
dexterg 0:e0a8ea9b571e 234 FILE *fp = fopen("/sd/d.txt", "a");
dexterg 0:e0a8ea9b571e 235 if(fp == NULL) {
dexterg 0:e0a8ea9b571e 236 fpga.printf("file system failed\r\n");
dexterg 0:e0a8ea9b571e 237 } else {
dexterg 0:e0a8ea9b571e 238 fpga.printf("file system active\r\n");
dexterg 1:ab74071de2c8 239 if(createFile==1) {
dexterg 5:159a0b7172c8 240 //fprintf(fp, "DateTime,Lifetime,02,Peak,Trough,Ancil\r\n");
dexterg 1:ab74071de2c8 241 }
dexterg 0:e0a8ea9b571e 242 }
dexterg 0:e0a8ea9b571e 243 fclose(fp);
dexterg 10:576161b68706 244 ds3231_cntl_stat_t rtc_control_status = {0,0};
dexterg 0:e0a8ea9b571e 245 rtc.set_cntl_stat_reg(rtc_control_status);
dexterg 0:e0a8ea9b571e 246 time_t epoch_time;
dexterg 0:e0a8ea9b571e 247 epoch_time = rtc.get_epoch();
dexterg 1:ab74071de2c8 248 //Comment above to test without RTC and SD
dexterg 0:e0a8ea9b571e 249
dexterg 0:e0a8ea9b571e 250
dexterg 1:ab74071de2c8 251 fpga.baud(9600);
dexterg 1:ab74071de2c8 252 fpga.printf("start v2 \r\n");
dexterg 5:159a0b7172c8 253
dexterg 1:ab74071de2c8 254 serial_t0.baud(4800);
dexterg 1:ab74071de2c8 255 serial_t0.printf("start soft serial\r\n");//DEBUG
dexterg 1:ab74071de2c8 256 serial_t0.attach(&serial_t0_RxInt,SoftSerial::RxIrq);
dexterg 1:ab74071de2c8 257 serial_t0.printf("entering loop\r\n"); ///DEBUG
dexterg 0:e0a8ea9b571e 258
dexterg 0:e0a8ea9b571e 259 while(1) {
dexterg 1:ab74071de2c8 260 //serial_t0.printf("looping \r\n");
dexterg 1:ab74071de2c8 261 //fpga.printf("Im looping too");
dexterg 5:159a0b7172c8 262
dexterg 0:e0a8ea9b571e 263 myled = 1;
dexterg 0:e0a8ea9b571e 264 wait(0.2);
dexterg 0:e0a8ea9b571e 265 myled = 0;
dexterg 0:e0a8ea9b571e 266 wait(0.2);
dexterg 5:159a0b7172c8 267
dexterg 1:ab74071de2c8 268 ///print data to file
dexterg 0:e0a8ea9b571e 269 if(newData==1) {
dexterg 3:f1287f5fde38 270 sprintf(pbuff,"%f,%f,%f,%f,%f,%f,%f",label,lifeTime,oTwo,peak,trough,pressure,temperature);
dexterg 3:f1287f5fde38 271 //serial_t0.printf("%s",pbuff);
dexterg 2:e0b3cb47b4ff 272 //sprintf(pbuff,"%f, %f, %f, %f, %f",lifeTime,oTwo,peak,trough,ancil);
dexterg 2:e0b3cb47b4ff 273 //fpga.printf("%s",pbuff);
dexterg 0:e0a8ea9b571e 274 time_t epoch_time;
dexterg 0:e0a8ea9b571e 275 epoch_time = rtc.get_epoch();
dexterg 11:ce12856c2a51 276
dexterg 11:ce12856c2a51 277 strftime(tbuff, 32, "%Y %m %d %H:%M:%S", localtime(&epoch_time));
dexterg 0:e0a8ea9b571e 278 FILE *fp = fopen("/sd/d.txt", "a");
dexterg 0:e0a8ea9b571e 279 if(fp == NULL) {
dexterg 0:e0a8ea9b571e 280 } else {
dexterg 11:ce12856c2a51 281 fprintf(fp, "%s, %s \r\n",tbuff, pbuff);
dexterg 0:e0a8ea9b571e 282 }
dexterg 11:ce12856c2a51 283 serial_t0.printf("%s, %s \r\n",tbuff,pbuff);
dexterg 0:e0a8ea9b571e 284 fclose(fp);
dexterg 0:e0a8ea9b571e 285 newData=0;
dexterg 5:159a0b7172c8 286 }
dexterg 5:159a0b7172c8 287
dexterg 5:159a0b7172c8 288 if(newSoftData==1) {
dexterg 1:ab74071de2c8 289 rxSoftIn=0;
dexterg 1:ab74071de2c8 290 newSoftData=0;
dexterg 5:159a0b7172c8 291
dexterg 1:ab74071de2c8 292 //serial_t0.printf(softBuffer);
dexterg 5:159a0b7172c8 293
dexterg 1:ab74071de2c8 294 string str(softBuffer);
dexterg 5:159a0b7172c8 295
dexterg 5:159a0b7172c8 296 if(softBuffer[0]=='S'&&softBuffer[1]=='D') {
dexterg 6:facc3b44ab4e 297 FILE *fr = fopen("/sd/d.txt", "r");
dexterg 5:159a0b7172c8 298 if(fr == NULL) {
dexterg 5:159a0b7172c8 299 serial_t0.printf("Could not open file for read");
dexterg 5:159a0b7172c8 300 } else {
dexterg 5:159a0b7172c8 301 lineN=0;
dexterg 5:159a0b7172c8 302 while( fgets(rBuffer , 200 , fr) != NULL && !( rBuffer[0]=='D' && lineN==1) ) {
dexterg 5:159a0b7172c8 303 if(rBuffer[0]=='D') {
dexterg 5:159a0b7172c8 304 lineN++;
dexterg 5:159a0b7172c8 305 } else {
dexterg 5:159a0b7172c8 306 serial_t0.printf("%s",rBuffer);
dexterg 6:facc3b44ab4e 307 //wait(0.040);
dexterg 5:159a0b7172c8 308 }
dexterg 5:159a0b7172c8 309 }
dexterg 5:159a0b7172c8 310 }
dexterg 9:9fd07a49c2ed 311 } else if(softBuffer[0]=='T'&&softBuffer[1]=='I') {
dexterg 9:9fd07a49c2ed 312
dexterg 9:9fd07a49c2ed 313 yearStr[0]=softBuffer[2];
dexterg 9:9fd07a49c2ed 314 yearStr[1]=softBuffer[3];
dexterg 9:9fd07a49c2ed 315 yearStr[2]=softBuffer[4];
dexterg 9:9fd07a49c2ed 316 yearStr[3]=softBuffer[5];
dexterg 9:9fd07a49c2ed 317 yearStr[4]='\0';
dexterg 9:9fd07a49c2ed 318
dexterg 9:9fd07a49c2ed 319 monthStr[0]=softBuffer[6];
dexterg 9:9fd07a49c2ed 320 monthStr[1]=softBuffer[7];
dexterg 9:9fd07a49c2ed 321 monthStr[2]='\0';
dexterg 9:9fd07a49c2ed 322
dexterg 9:9fd07a49c2ed 323 dayStr[0]=softBuffer[8];
dexterg 9:9fd07a49c2ed 324 dayStr[1]=softBuffer[9];
dexterg 9:9fd07a49c2ed 325 dayStr[2]='\0';
dexterg 9:9fd07a49c2ed 326
dexterg 9:9fd07a49c2ed 327 hourStr[0]=softBuffer[10];
dexterg 9:9fd07a49c2ed 328 hourStr[1]=softBuffer[11];
dexterg 9:9fd07a49c2ed 329 hourStr[2]='\0';
dexterg 9:9fd07a49c2ed 330
dexterg 9:9fd07a49c2ed 331 minStr[0]=softBuffer[12];
dexterg 9:9fd07a49c2ed 332 minStr[1]=softBuffer[13];
dexterg 9:9fd07a49c2ed 333 minStr[2]='\0';
dexterg 9:9fd07a49c2ed 334
dexterg 9:9fd07a49c2ed 335 secStr[0]=softBuffer[14];
dexterg 9:9fd07a49c2ed 336 secStr[1]=softBuffer[15];
dexterg 9:9fd07a49c2ed 337 secStr[2]='\0';
dexterg 9:9fd07a49c2ed 338
dexterg 10:576161b68706 339 //serial_t0.printf("%s %s %s %s %s %s",yearStr,monthStr,dayStr,hourStr,minStr,secStr);
dexterg 10:576161b68706 340
dexterg 10:576161b68706 341 ds3231_time_t rtc_time2 = {atoi(secStr),atoi(minStr),atoi(hourStr),0,0};
dexterg 10:576161b68706 342 ds3231_calendar_t rtc_calendar2= {3,atoi(dayStr),atoi(monthStr),atoi(yearStr)};
dexterg 10:576161b68706 343 rtc.set_time(rtc_time2);
dexterg 10:576161b68706 344 rtc.set_calendar(rtc_calendar2);
dexterg 9:9fd07a49c2ed 345
dexterg 6:facc3b44ab4e 346 } else if(softBuffer[0]=='P'&&softBuffer[1]=='A') {
dexterg 5:159a0b7172c8 347
dexterg 6:facc3b44ab4e 348 pch = strtok (softBuffer,",");
dexterg 6:facc3b44ab4e 349 strN=0;
dexterg 9:9fd07a49c2ed 350 while (pch != NULL) {
dexterg 9:9fd07a49c2ed 351 if(strN==1) {
dexterg 9:9fd07a49c2ed 352 setT0 = atoi(pch);
dexterg 9:9fd07a49c2ed 353 }
dexterg 9:9fd07a49c2ed 354 if(strN==2) {
dexterg 9:9fd07a49c2ed 355 setPre0 =atoi(pch);
dexterg 9:9fd07a49c2ed 356 }
dexterg 9:9fd07a49c2ed 357 if(strN==3) {
dexterg 9:9fd07a49c2ed 358 setM=atoi(pch);
dexterg 9:9fd07a49c2ed 359 }
dexterg 9:9fd07a49c2ed 360 if(strN==4) {
dexterg 9:9fd07a49c2ed 361 setC =atoi(pch);
dexterg 9:9fd07a49c2ed 362 }
dexterg 6:facc3b44ab4e 363 pch = strtok (NULL, ",");
dexterg 6:facc3b44ab4e 364 strN++;
dexterg 6:facc3b44ab4e 365 }
dexterg 9:9fd07a49c2ed 366 ///serial_t0.printf (" setT0: %d Pre0 %d M %d C %d \n",setT0,setPre0,setM,setC);
dexterg 9:9fd07a49c2ed 367
dexterg 6:facc3b44ab4e 368 FILE *fpo = fopen("/sd/set.txt", "w");
dexterg 6:facc3b44ab4e 369 if(fpo != NULL) {
dexterg 6:facc3b44ab4e 370 fprintf(fpo,"%d,%d,%d,%d\n",setT0,setPre0,setM,setC);
dexterg 6:facc3b44ab4e 371 }
dexterg 6:facc3b44ab4e 372 fclose(fpo);
dexterg 9:9fd07a49c2ed 373
dexterg 9:9fd07a49c2ed 374 SendSet();
dexterg 9:9fd07a49c2ed 375
dexterg 6:facc3b44ab4e 376 }
dexterg 5:159a0b7172c8 377
dexterg 6:facc3b44ab4e 378 }
dexterg 9:9fd07a49c2ed 379
dexterg 6:facc3b44ab4e 380 setSend++;
dexterg 9:9fd07a49c2ed 381
dexterg 9:9fd07a49c2ed 382 if(setSend>20) {
dexterg 9:9fd07a49c2ed 383 setSend=0;
dexterg 6:facc3b44ab4e 384 SendSet();
dexterg 0:e0a8ea9b571e 385 }
dexterg 9:9fd07a49c2ed 386
dexterg 0:e0a8ea9b571e 387 }
dexterg 6:facc3b44ab4e 388 }