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
TextFile.h
- Committer:
- mehatfie
- Date:
- 2014-09-16
- Revision:
- 1:5731f31f96be
- Parent:
- 0:22618cf06f45
- Child:
- 2:3e7baa3e3fec
File content as of revision 1:5731f31f96be:
#include "mbed.h" #include "TextLCD.h" #include "SDFileSystem.h" #include <stdio.h> #include <string> #include <stdlib.h> #include <vector> using std::string; //vector<string> filenames; //filenames are stored in a vector string vector<string> readFileNames(char *); int getFileNamesWithoutExt(string[], vector<string> &); string getPreviousLine(istream &); /******************************************************************************/ /*** <readFileNames> ***/ /******************************************************************************/ // read file names into vector of strings vector<string> readFileNames(char *dir) { vector<string> filenames; DIR *dp; struct dirent *dirp; dp = opendir(dir); //read all directory and file names in current directory into filename vector while((dirp = readdir(dp)) != NULL) { filenames.push_back(string(dirp->d_name)); } closedir(dp); return filenames; } /******************************************************************************/ /*** <getFileNamesWithoutExt> ***/ /******************************************************************************/ // save filename strings to array from vector using an iterator int getFileNamesWithoutExt(string fileNames[], vector<string> &filenames) { //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++) { //Convert the Vector found String to a char for use in the strtok function char temp[50]; if((*it).size() < 100) strcpy(temp, (*it).c_str()); // Retrieve the fileName and fileExtension by splitting the string char *fileName; char *fileExtension; fileName = strtok(temp, "."); fileExtension = strtok(NULL, "."); // if the file is a .txt file, then save it to the array if (strncmp(fileExtension,"txt", 3) == 0) { fileNames[n] = fileName; n++; } } return n; //Return the number of txt files that were found in the directory } /******************************************************************************/ /*** <getNextLine> ***/ /******************************************************************************/ // void getNextLine(FILE *selectedFile) { lineData.lineAddress = ftell(selectedFile); char *newLine; newLine = new char[MAX_LINE_LENGTH]; fgets(newLine, MAX_LINE_LENGTH, selectedFile); lineData.fullLine = newLine; lineData.lineNumber++; //Create a copy of the line, so that we don't effect the full line when we're extracting the words char *cpyLine; cpyLine = new char[MAX_LINE_LENGTH]; strcpy(cpyLine, newLine); char *tempWord; tempWord = new char; int numWords = 0; tempWord = strtok(cpyLine, " "); while (tempWord != NULL){ strcpy(lineData.word[numWords], tempWord); //Record the word in the lineData array numWords++; //add the number of words first, since we've already got one word, this helps for the way the while loop works too tempWord = strtok(NULL, " "); } lineData.numWords = numWords; //Record the number of words in the line lcd.setAddress(0,1); lcd.printf("Current Line#: %d ", lineData.lineNumber); delete[] tempWord; delete[] newLine; delete[] cpyLine; /* lcd.cls(); //clear the display lcd.setAddress(0,0); lcd.printf("wrd1: %s", lineData.word[0]); lcd.setAddress(0,1); lcd.printf("wrd2: %s", lineData.word[1]); lcd.setAddress(0,2); lcd.printf("wrd3: %s", lineData.word[2]); lcd.setAddress(0,3); lcd.printf("wrd4: %s", lineData.word[3]); wait(5);*/ }