menu für die LCD Anzeige

Files at this revision

API Documentation at this revision

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