Initial Publish Leaning GPS/SDCARD
Dependencies: FileManager GPSGms6 SDFileSystem mbed
Fork of 2545_SD_Card by
Revision 4:aa7ac2ac6913, committed 2016-05-09
- Comitter:
- Lucyjungz
- Date:
- Mon May 09 08:59:23 2016 +0000
- Parent:
- 3:78eaf4291b84
- Child:
- 5:07aaa6e3784c
- Commit message:
- read variable list from another xml file
Changed in this revision
--- a/FileManager.cpp Fri May 06 20:23:08 2016 +0000 +++ b/FileManager.cpp Mon May 09 08:59:23 2016 +0000 @@ -3,6 +3,8 @@ char m_GpsInterval[XMLTEXT_SIZE]; char m_DataInterval[XMLTEXT_SIZE]; +Variable_Data_TypeDef m_varList[MAX_VAR]; +unsigned int m_amountVarList; static void removeSpaces(char* s , int size); static void getXmlText(char *str, char *ret); @@ -101,7 +103,7 @@ if (fp == NULL) { // if it can't open the file then print error message printf("Error! Unable to open file!\n"); } else { // opened file so can write - printf("\n Writing to Gps Log File...."); + printf("\r\n Writing to Gps Log File...."); fprintf(fp, "%s,%s\n",date,time); // print formatted string to file (CSV) @@ -141,4 +143,41 @@ { //Return whether or not CRC is enabled return atoi( m_DataInterval ); -} \ No newline at end of file +} + +Variable_Data_TypeDef * readVarFile() +{ + // now open file for reading + FILE *fp = fopen(VARIABLE_FILE_NAME, "r"); + + if (fp == NULL) { // if it can't open the file then print error message + printf("\nError! Unable to open file! %s \n", VARIABLE_FILE_NAME); + return NULL; + } else { // opened file so can write + + char buf[1024]; + int index = 0; + memset(m_varList, ' ', sizeof(m_varList)); + while (fgets(buf, sizeof(buf), fp) != NULL) + { + if (strstr (buf,VAR_NAME_TAG)) + { + getXmlText(buf , m_varList[index].varName); + + } + else if (strstr (buf,VAR_ADDR_TAG)) + { + getXmlText(buf , m_varList[index].varAddress); + index++; + } + + } + fclose(fp); // ensure you close the file after reading + m_amountVarList = index; + return m_varList; + } +} +int getVarListAmount(){ + return m_amountVarList; +} +
--- a/FileManager.h Fri May 06 20:23:08 2016 +0000 +++ b/FileManager.h Mon May 09 08:59:23 2016 +0000 @@ -1,11 +1,18 @@ +#define SETUP_FILE_NAME "/sd/RMS_Tester.xml" +#define GPS_LOG_FILE_NAME "/sd/gps.csv" +#define VARIABLE_FILE_NAME "/sd/20160216185627_upload.xml" +#define MINIRMS_LOG_FILE_NAME "/sd/miniRMS.log" + #define GPS_TAG "<Gps>" #define DATA_TAG "<Data>" #define UPDATE_INTERVAL_TAG "<Update_Interval>" -#define SETUP_FILE_NAME "/sd/RMS_Tester.xml" -#define GPS_LOG_FILE_NAME "/sd/gps.csv" -#define MINIRMS_LOG_FILE_NAME "/sd/miniRMS.log" +#define VAR_NAME_TAG "<varName>" +#define VAR_ADDR_TAG "<varAddress>" #define XMLTEXT_SIZE 20 +#define VAR_NAME_MAX_SIZE 20 +#define VAR_ADDR_MAX_SIZE 10 +#define MAX_VAR 50 typedef enum { STATE_FINDING, /** Finding */ @@ -16,6 +23,11 @@ }ReadingFileState; +typedef struct +{ + char varName[VAR_NAME_MAX_SIZE]; + char varAddress[VAR_ADDR_MAX_SIZE+1]; +} Variable_Data_TypeDef; void readSetupFile(); void delete_file(char filename[]); @@ -23,3 +35,5 @@ int DataInterval(); void logGPSData(char date[], char time[]); void logSystemData(float gps_interval); +Variable_Data_TypeDef * readVarFile(); +int getVarListAmount();
--- a/GPSGms6.cpp Fri May 06 20:23:08 2016 +0000 +++ b/GPSGms6.cpp Mon May 09 08:59:23 2016 +0000 @@ -40,9 +40,11 @@ } else if (buf[buf_index] == ','){ status = GPS_Status_Empty; + memset(ret_value,' ', section_size); } else{ unsigned int idx; +// printf("\r\n state = %d =",state); for(idx = 0;idx < section_size;idx++) { ret_value[idx] = buf[buf_index + idx]; @@ -148,6 +150,10 @@ m_available = false; serial_gps.baud(9600); + +} +void GPSGms6::start_GPS() +{ serial_gps.attach(&byte_callback); } GPRMC_Data_TypeDef GPSGms6::latestGPRMC()
--- a/GPSGms6.h Fri May 06 20:23:08 2016 +0000 +++ b/GPSGms6.h Mon May 09 08:59:23 2016 +0000 @@ -19,19 +19,19 @@ typedef struct { - char header[HEADER_SIZE]; - char time[GPRMC_TIME_SIZE]; - char status[GPRMC_TIME_SIZE]; - char latitude[GPRMC_LATITUDE_SIZE]; - char latitude_hemi[GPRMC_LATITUDE_HEMI_SIZE]; - char longitude[GPRMC_LONGITUDE_SIZE]; - char longitude_hemi[GPRMC_LATITUDE_HEMI_SIZE]; - char speed[GPRMC_SPEED_SIZE]; - char course[GPRMC_COURSE_SIZE]; - char date[GPRMC_DATE_SIZE]; - char magnetic[GPRMC_MAGNETIC_SIZE]; - char magnetic_dir[GPRMC_MAGNETIC_DIR_SIZE]; - char indicator[GPRMC_INDICATOR_SIZE]; + char header[HEADER_SIZE+1]; + char time[GPRMC_TIME_SIZE+1]; + char status[GPRMC_TIME_SIZE+1]; + char latitude[GPRMC_LATITUDE_SIZE+1]; + char latitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1]; + char longitude[GPRMC_LONGITUDE_SIZE+1]; + char longitude_hemi[GPRMC_LATITUDE_HEMI_SIZE+1]; + char speed[GPRMC_SPEED_SIZE+1]; + char course[GPRMC_COURSE_SIZE+1]; + char date[GPRMC_DATE_SIZE+1]; + char magnetic[GPRMC_MAGNETIC_SIZE+1]; + char magnetic_dir[GPRMC_MAGNETIC_DIR_SIZE+1]; + char indicator[GPRMC_INDICATOR_SIZE+1]; } GPRMC_Data_TypeDef; typedef enum GPS_ProcessState @@ -76,7 +76,7 @@ GPSGms6(); - + void start_GPS(); /** Get Latest GPRMC Data * * @returns
--- a/main.cpp Fri May 06 20:23:08 2016 +0000 +++ b/main.cpp Mon May 09 08:59:23 2016 +0000 @@ -38,7 +38,7 @@ printf("\r\nGps indicator = %s", gps.latestGPRMC().indicator); logGPSData( gps.latestGPRMC().date, gps.latestGPRMC().time); - serial.printf("\n#### Restart Timer #####"); + serial.printf("\r\n#### Restart Timer #####"); t1.attach(&t1out,gps_interval); } @@ -51,11 +51,20 @@ ////////////////////// read Setup File ////////////////////////// readSetupFile(); gps_interval = (float)GPSInterval()/1000; + + Variable_Data_TypeDef * var_list = readVarFile(); logSystemData(gps_interval); + unsigned int amount = getVarListAmount(); + for (int i = 0; i < amount ; i++) + { + serial.printf("\r\n first var name = %s ",var_list[i].varName); + serial.printf("\r\n first addr name = %s ",var_list[i].varAddress); + } + /////////////////////////////////////////////////// serial.printf("\n End of SD Card Initialization "); - + gps.start_GPS(); t1.attach(&t1out,gps_interval); while(1); }