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:
- 0:22618cf06f45
- Child:
- 1:5731f31f96be
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TextFile.h Tue Sep 16 15:28:59 2014 +0000
@@ -0,0 +1,119 @@
+#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) {
+
+ char newLine[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[MAX_LINE_LENGTH];
+ strcpy(cpyLine, newLine);
+
+ char *tempWord;
+ 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);
+ /*
+ 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);*/
+}
+
+
+
+
+
+
+
+