attempt to fix posible power issues with the sharp
Dependencies: ADS1115 BME280 CronoDot SDFileSystem mbed
Fork of Outdoor_UPAS_v1_2_Tboard by
Diff: main.cpp
- Revision:
- 52:95949e34b1f6
- Parent:
- 51:feba3e2aa1a0
- Child:
- 53:5b4991d93cb1
--- a/main.cpp Sat May 14 00:18:34 2016 +0000 +++ b/main.cpp Sun May 15 03:45:12 2016 +0000 @@ -13,6 +13,8 @@ #include "MAX_M8.h" //#include "DRV8830.h" #include "Tb_SD_Reader.h" +#include <vector> +#include <string> ///////////////////////////////////////////// @@ -91,11 +93,11 @@ ///////////////////////////////////////////// //SD Card ///////////////////////////////////////////// -char filename[] = "/sd/XXXX0000LOG000000000000---------------.txt"; +char filename[] = "/sd/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt"; SDFileSystem sd(PB_5, PB_4, PB_3, PB_6, "sd");//(D4, D5, D3, D10, "sd"); // (MOSI, MISO, SCK, SEL) Tb_SD_Reader sdReader; DigitalIn sdCD(PA_11, PullUp); -char fileTest[] = "test.txt"; + ///////////////////////////////////////////// //Callbacks @@ -204,7 +206,9 @@ //*************************************************// void sendData(); -void Read_File(char[]); +void Read_File(); +int file_copy(const char *src, const char *dst); +//void Read_File(char[]); void pc_recv(){ while(pc.readable()){ @@ -263,7 +267,8 @@ if(transmissionValue == 15){ if(fileTransferLock==0){ fileTransferLock=1; - Read_File(fileTest); + //Read_File(fileTest); + Read_File(); fileTransferLock=0; RGB_LED.set_led(1,1,1); } @@ -357,6 +362,7 @@ uint8_t latLongHome2[9] = {0x0B,0x00,0x00,0x80,0x3F,0x00,0x00,0x80,0x3F}; uint8_t cartridgeIDOriginal[4] = {0x0C,0x48,0x48,0x48}; uint8_t dutyCycleOriginal[4] = {0x0D,0x31,0x30,0x30}; + //uint8_t transfer_fileName[62] = {0x0E, 0x4d, 0x53, 0x30, 0x30, 0x30, 0x30, 0x4c, 0x4f, 0x47, 0x5f, 0x30, 0x30, 0x2d, 0x30, 0x30, 0x2d, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x3d, 0x30, 0x30, 0x3d, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5f, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x74, 0x78, 0x74}; // Latitude School EEPROM = 0x50-0x53 // Longitude School EEPROM = 0x54-0x57 // Latitude Home EEPROM = 0x58-0x5B @@ -434,32 +440,94 @@ } -void Read_File(char filename[]){ - char new_str[] = "/sd/XXXX0000LOG000000000000---------------.txt"; +void Read_File(){ +//void Read_File(char filename[]){ + + char transfer_fileName[] = "MS000LOG_000000_000000_000000_000000_---------------_xxx.txt"; + char transfer_fileNamedir[] = "/sd/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt"; + char transfer_fileNamedirCopy[] = "/sd/c/MS000LOG_000000_000000_000000_000000_---------------_xxx.txt"; + - sprintf(new_str, "/sd/%s", filename); - FILE *fp = fopen(new_str, "r"); - if(fp == NULL) { - pc.printf("Could not open file, check disk.\r\n"); - while(1) {}; - } else { - pc.printf("file opened\r\n"); + vector<string> filenames; //filenames are stored in a vector string + DIR *dp; + struct dirent *dirp; + dp = opendir("/sd"); + //read all directory and file names in current directory into filename vector + while((dirp = readdir(dp)) != NULL) { + filenames.push_back(string(dirp->d_name)); } - unsigned char c; - uint8_t sendMe[1] = {254}; - RGB_LED.set_led(0,1,0); - //pc.printf("%s\r\n",fp.c_str()); - microChannel.putc(sendMe[0]); - while (c != 255){ // while not end of file or forever - c=fgetc(fp); // get a character/byte from the file - //printf("%c",c); // and show it in hex format - microChannel.putc(c); - //wait(0.005); + closedir(dp); + vector<string>::iterator it; + + for(it=filenames.begin(); it < filenames.end(); it++) { + // string str ((*it).c_str()); + if((*it).substr((*it).length()-3) == "txt"){ + //if(((it - filenames.begin())+1) == 1){ + pc.printf("%d: %s\r\n", ((it - filenames.begin())+1), (*it).c_str()); + sprintf(transfer_fileName, "%s", (*it).c_str()); + sprintf(transfer_fileNamedir, "/sd/%s", (*it).c_str()); + sprintf(transfer_fileNamedirCopy, "/sd/c/%s", (*it).c_str()); + pc.printf("%s", transfer_fileNamedirCopy); + FILE *fp = fopen(transfer_fileNamedir, "r"); + if(fp == NULL) { + pc.printf("Could not open file, check disk.\r\n"); + while(1) {}; + } else { + pc.printf("file opened\r\n"); + } + unsigned char c; + uint8_t sendMe[1] = {254}; + RGB_LED.set_led(0,1,0); + //pc.printf("%s\r\n",fp.c_str()); + microChannel.putc(sendMe[0]); + for(int i=0;i<65;i++){ + microChannel.putc(transfer_fileName[i]); + } + while (c != 255){ // while not end of file or forever + c=fgetc(fp); // get a character/byte from the file + //printf("%c",c); // and show it in hex format + microChannel.putc(c); + //wait(0.005); + } + //RGB_LED.set_led(1,0,0); + printf("\r\n"); + fclose(fp); + + int status = file_copy(transfer_fileNamedir, transfer_fileNamedirCopy); + remove(transfer_fileNamedir); + break; // close the file + } + } - //RGB_LED.set_led(1,0,0); - printf("\r\n"); - fclose(fp); // close the file + + + +}; + +int file_copy(const char *src, const char *dst) +{ + int retval = 0; + int ch; + + FILE *fpsrc = fopen(src, "r"); // src file + FILE *fpdst = fopen(dst, "w"); // dest file + while (1) { // Copy src to dest + ch = fgetc(fpsrc); // until src EOF read. + if (ch == EOF) break; + fputc(ch, fpdst); + } + fclose(fpsrc); + fclose(fpdst); + + fpdst = fopen(dst, "r"); // Reopen dest to insure + if (fpdst == NULL) { // that it was created. + retval = -1; // Return error. + } else { + fclose(fpdst); + retval = 0; // Return success. + } + return retval; }; ////////////////////////////////////////////////////////////// @@ -1016,21 +1084,44 @@ wait(0.5); } + RTC_UPAS.get_time(); gps.read(1); gpsTime = (long)gps.utc; gpsDate = (long)gps.date; - - + time_t seconds = time(NULL); strftime(timestr, 32, "%y-%m-%d-%H=%M=%S", localtime(&seconds)); - RTC_UPAS.get_time(); + + strftime(yrstr, 4, "%y", localtime(&seconds)); + stYr = atoi(yrstr); + + strftime(mostr, 4, "%m", localtime(&seconds)); + stMo = atoi(mostr); + + strftime(daystr, 4, "%d", localtime(&seconds)); + stDay = atoi(daystr); + + strftime(hrstr, 4, "%H", localtime(&seconds)); + stHr = atoi(hrstr); + + strftime(minstr, 4, "%M", localtime(&seconds)); + stMin = atoi(minstr); + + strftime(secstr, 4, "%S", localtime(&seconds)); + stSec = atoi(secstr); + + + + + if(tempSerialNum < 18){ - sprintf(filename, "/sd/MS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]); + sprintf(filename, "/sd/MS%03dLOG_%02d%02d%02d_%02d%02d%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,stYr,stMo,stDay,stHr,stMin,stSec,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]); } else{ - sprintf(filename, "/sd/PS%04dLOG_%02d-%02d-%02d_%02d=%02d=%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,RTC_UPAS.year,RTC_UPAS.month,RTC_UPAS.date,RTC_UPAS.hour,RTC_UPAS.minutes,RTC_UPAS.seconds,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]); + sprintf(filename, "/sd/PS%03dLOG_%02d%02d%02d_%02d%02d%02d_%06d_%06d_%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c_%c%c%c.txt",serial_num,stYr,stMo,stDay,stHr,stMin,stSec,gpsDate,gpsTime,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7],subjectLabelOriginal[8],subjectLabelOriginal[9],subjectLabelOriginal[10],subjectLabelOriginal[11],subjectLabelOriginal[12],subjectLabelOriginal[13],subjectLabelOriginal[14],cartridgeID[0],cartridgeID[1],cartridgeID[2]); + } //sprintf(filename, "/sd/UPAS_TboardtestLog_%s_%c%c%c%c%c%c%c%c.txt", timestr,subjectLabelOriginal[0],subjectLabelOriginal[1],subjectLabelOriginal[2],subjectLabelOriginal[3],subjectLabelOriginal[4],subjectLabelOriginal[5],subjectLabelOriginal[6],subjectLabelOriginal[7]); //sprintf(filename, "/sd/UPAS_TboardtestLog_%s.txt", timestr);