Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
menu.cpp
00001 // 00002 // menu file interface class (Version 0.0.1) 00003 // 00004 // 00005 #include "string.h" 00006 #include "menu.h" 00007 #include "SDFileSystem.h" 00008 #include "FATDirHandle.h" 00009 #include "MODSERIAL.h" 00010 00011 extern MODSERIAL pc; // definiert in main 00012 extern SDFileSystem sd; 00013 00014 // Create a menu file class. 00015 menu::menu() { 00016 00017 } 00018 00019 00020 // Destroy a menu file class. 00021 menu::~menu() { 00022 00023 } 00024 00025 00026 // Read parameter from the target file. 00027 bool menu::getValue(uint8_t pos, char *zeile1, char *zeile2, char *value) 00028 { 00029 bool flag = false; 00030 int e, n, nr = 0; 00031 char buf[80]; 00032 00033 // Open the target file. 00034 FILE *fp = fopen("/sd/menu.csv", "r"); 00035 if (fp == NULL) { 00036 return false; 00037 } 00038 00039 // jeweils eine Zeile aus der Datei lesen 00040 00041 while (fgets(buf, sizeof(buf), fp) != NULL) 00042 { 00043 // pc.printf("\nmenu: %s",buf); 00044 00045 // Ignore a comment. 00046 if (buf[0] == '#') { 00047 continue; 00048 } 00049 00050 // Trim a return. 00051 const size_t len = strlen(buf); 00052 for (int i = 0; i < len; i++) { 00053 if ((buf[i] == '\r') || (buf[i] == '\n')) { 00054 buf[i] = '\0'; 00055 } 00056 } 00057 00058 // Separate pos 00059 char temp[40]; 00060 char *sp = strchr(buf, ';'); 00061 if (sp != NULL) 00062 { 00063 // pc.printf("\n separate pos:"); 00064 n = sp - buf; 00065 for (e = 0; e < n; e++) 00066 { 00067 temp[e] = buf[e]; 00068 // pc.printf(" %02x",temp[e]); 00069 } 00070 temp[e] = 0; 00071 sp++; 00072 nr = atoi(temp); 00073 } 00074 // pc.printf("\n menu 1 temp: %s, %d",temp,nr); 00075 00076 // Separate Zeile1, zeile2, Wert 00077 if (pos == nr) 00078 { 00079 char *sp1 = strchr(sp, ';'); 00080 00081 // pc.printf("\n separate Zeile 1:"); 00082 00083 n = sp1 - sp; 00084 for (e = 0; e < n; e++) 00085 { 00086 zeile1[e] = *sp; sp++; 00087 // pc.printf(" %02x",zeile1[e]); 00088 } 00089 zeile1[e] = 0; 00090 sp1++; 00091 00092 // pc.printf("\n menu 1 zeile 1: [%s]",zeile1); 00093 00094 char *sp2 = strchr(sp1, ';'); 00095 // pc.printf("\n separate Zeile 2:"); 00096 00097 n = sp2 - sp1; 00098 for (e = 0; e < n; e++) 00099 { 00100 zeile2[e] = *sp1; sp1++; 00101 // pc.printf(" %02x",zeile2[e]); 00102 } 00103 zeile2[e] = 0; 00104 sp2++; 00105 00106 // pc.printf("\n menu zeile 2: [%s]",zeile2); 00107 00108 // den rest der Zeile beinhaltet das value 00109 // pc.printf("\n separate Zeile 2:"); 00110 for (int e = 0;; e++) 00111 { 00112 value[e] = *sp2; sp2++; 00113 // pc.printf(" %02x",value[e]); 00114 if (value[e] == 0) break; 00115 } 00116 00117 // pc.printf("\n menu value: [%s]",value); 00118 00119 flag = true; 00120 break; 00121 } 00122 } 00123 00124 fclose(fp); 00125 return flag; 00126 }
Generated on Fri Jul 15 2022 19:45:09 by
1.7.2