Component Test's Software to work with "Universal Controller Box" - Software is an interpreter or "compiler" for programs to be done with a .txt file and read off of the SD Card
Dependencies: BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed
Diff: TextFile.h
- Revision:
- 11:bc9cd2869f95
- Parent:
- 9:5a0c4c6e39c7
diff -r e8db892fbc52 -r bc9cd2869f95 TextFile.h --- a/TextFile.h Wed Sep 24 22:54:36 2014 +0000 +++ b/TextFile.h Wed Oct 01 18:11:38 2014 +0000 @@ -61,8 +61,7 @@ //Cycle through all files listed in the directoy (strings in the vector list) int n = 0; - for(vector<string>::iterator it=filenames.begin(); it < filenames.end(); it++) - { + for(vector<string>::iterator it=filenames.begin(); it < filenames.end(); it++){ vector<string> fileName; //filename[0] = filename, filename[1] = extension @@ -92,39 +91,47 @@ int getNextLine(FILE *selectedFile, LineData &lineData) { - lineData.lineAddress = ftell(selectedFile); - - if (lineData.lineAddress == -1L){ - ErrorOut("Unable to get address of line, SD Card Removed?", lineData.lineNumber + 1); - return -1; - } - - //char *newLine; - //getline(selectedFile, newLine); - char newLine[MAX_LINE_LENGTH]; - - fgets(newLine, MAX_LINE_LENGTH, selectedFile); + int validLine = 0; + while (!validLine){ + + lineData.lineAddress = ftell(selectedFile); + + if (lineData.lineAddress == -1L){ + ErrorOut("Unable to get address of line, SD Card Removed?", lineData.lineNumber + 1); + return -1; + } + + //char *newLine; + //getline(selectedFile, newLine); + char newLine[MAX_LINE_LENGTH]; + + fgets(newLine, MAX_LINE_LENGTH, selectedFile); + + if (newLine == NULL){ + ErrorOut("Unable to get the next line, SD Card Removed?", lineData.lineNumber + 1); + return -1; + } + + lineData.lineNumber++; // new line successfully found, increase lineNumber + + //pull out each individual word (separated by any white space), and place it in the vector + stringstream newLineStrm(newLine); + istream_iterator<string> it(newLineStrm); + istream_iterator<string> end; + vector<string> results(it, end); + + //Get the size of the results vector, if it is 0 then while loop will loop again, + //if it has a value, then it will accept the line and end looping cycles + validLine = results.size(); - if (newLine == NULL){ - ErrorOut("Unable to get the next line, SD Card Removed?", lineData.lineNumber + 1); - return -1; + //copy the vector of results into the array of words + copy(results.begin(), results.end(), lineData.word); + + lineData.numWords = results.size(); //Record the number of words in the line + + results.erase(results.begin(), results.end()); //remove the results vector from memory } - lineData.lineNumber++; // new line successfully found, increase lineNumber - - //pull out each individual word (separated by any white space), and place it in the vector - stringstream newLineStrm(newLine); - istream_iterator<string> it(newLineStrm); - istream_iterator<string> end; - vector<string> results(it, end); - - //copy the vector of results into the array of words - copy(results.begin(), results.end(), lineData.word); - - lineData.numWords = results.size(); //Record the number of words in the line - - results.erase(results.begin(), results.end()); //remove the results vector from memory - //Update the Current Line Number lcd.setAddress(0,2); lcd.printf("Current Line#: %d ", lineData.lineNumber); @@ -134,7 +141,7 @@ lcd.printf(" "); // Clear the Line using Spaces (Emptyness) - Note one line is 20 Characters lcd.setAddress(0,3); lcd.printf("cmd/dvc: %s", lineData.word[0]); - + /* lcd.cls(); //clear the display lcd.setAddress(0,0); @@ -145,7 +152,7 @@ lcd.printf("wrd3: %s", lineData.word[2]); lcd.setAddress(0,3); lcd.printf("wrd4: %s", lineData.word[3]); - wait(2);*/ + wait(1);*/ }