menu für die LCD Anzeige
Revision 0:e2164273a29e, committed 2015-01-06
- Comitter:
- rs27
- Date:
- Tue Jan 06 18:15:04 2015 +0000
- Commit message:
- menue
Changed in this revision
menu.cpp | Show annotated file Show diff for this revision Revisions of this file |
menu.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r e2164273a29e menu.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menu.cpp Tue Jan 06 18:15:04 2015 +0000 @@ -0,0 +1,126 @@ +// +// menu file interface class (Version 0.0.1) +// +// +#include "string.h" +#include "menu.h" +#include "SDFileSystem.h" +#include "FATDirHandle.h" +#include "MODSERIAL.h" + +extern MODSERIAL pc; // definiert in main +extern SDFileSystem sd; + +// Create a menu file class. +menu::menu() { + +} + + +// Destroy a menu file class. +menu::~menu() { + +} + + +// Read parameter from the target file. +bool menu::getValue(uint8_t pos, char *zeile1, char *zeile2, char *value) +{ + bool flag = false; + int e, n, nr = 0; + char buf[80]; + + // Open the target file. + FILE *fp = fopen("/sd/menu.csv", "r"); + if (fp == NULL) { + return false; + } + + // jeweils eine Zeile aus der Datei lesen + + while (fgets(buf, sizeof(buf), fp) != NULL) + { + // pc.printf("\nmenu: %s",buf); + + // Ignore a comment. + if (buf[0] == '#') { + continue; + } + + // Trim a return. + const size_t len = strlen(buf); + for (int i = 0; i < len; i++) { + if ((buf[i] == '\r') || (buf[i] == '\n')) { + buf[i] = '\0'; + } + } + + // Separate pos + char temp[40]; + char *sp = strchr(buf, ';'); + if (sp != NULL) + { + // pc.printf("\n separate pos:"); + n = sp - buf; + for (e = 0; e < n; e++) + { + temp[e] = buf[e]; + // pc.printf(" %02x",temp[e]); + } + temp[e] = 0; + sp++; + nr = atoi(temp); + } + // pc.printf("\n menu 1 temp: %s, %d",temp,nr); + + // Separate Zeile1, zeile2, Wert + if (pos == nr) + { + char *sp1 = strchr(sp, ';'); + + // pc.printf("\n separate Zeile 1:"); + + n = sp1 - sp; + for (e = 0; e < n; e++) + { + zeile1[e] = *sp; sp++; + // pc.printf(" %02x",zeile1[e]); + } + zeile1[e] = 0; + sp1++; + + // pc.printf("\n menu 1 zeile 1: [%s]",zeile1); + + char *sp2 = strchr(sp1, ';'); + // pc.printf("\n separate Zeile 2:"); + + n = sp2 - sp1; + for (e = 0; e < n; e++) + { + zeile2[e] = *sp1; sp1++; + // pc.printf(" %02x",zeile2[e]); + } + zeile2[e] = 0; + sp2++; + + // pc.printf("\n menu zeile 2: [%s]",zeile2); + + // den rest der Zeile beinhaltet das value + // pc.printf("\n separate Zeile 2:"); + for (int e = 0;; e++) + { + value[e] = *sp2; sp2++; + // pc.printf(" %02x",value[e]); + if (value[e] == 0) break; + } + + // pc.printf("\n menu value: [%s]",value); + + flag = true; + break; + } + } + + fclose(fp); + return flag; +}
diff -r 000000000000 -r e2164273a29e menu.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menu.h Tue Jan 06 18:15:04 2015 +0000 @@ -0,0 +1,30 @@ +// +// menu file interface class (Version 0.0.1) +// +// + +#include "mbed.h" + +#ifndef _MENU_H_ +#define _MENU_H_ + + #define SEPARATOR = ';'; + +// menu File class. +class menu { +public: + + // Create a menu class. + menu(); + + // Destroy a menu class. + ~menu(); + + // nach einer Zeile suchen und diese ausgeben + bool getValue(uint8_t pos, char *zeile1, char *zeile2, char *value); + +private: + +}; + +#endif