monitor
Dependents: 09_PT1000 10_PT1000 11_PT1000
monitor.cpp@1:19313470f629, 2014-07-28 (annotated)
- Committer:
- rs27
- Date:
- Mon Jul 28 14:36:32 2014 +0000
- Revision:
- 1:19313470f629
- Parent:
- 0:f0fbbfdca478
10 PT1000 monitor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rs27 | 0:f0fbbfdca478 | 1 | |
rs27 | 0:f0fbbfdca478 | 2 | #include <stdarg.h> |
rs27 | 0:f0fbbfdca478 | 3 | #include <ctype.h> |
rs27 | 0:f0fbbfdca478 | 4 | #include "monitor.h" |
rs27 | 1:19313470f629 | 5 | #include "ConfigFile.h" |
rs27 | 1:19313470f629 | 6 | #include "SDFileSystem.h" |
rs27 | 1:19313470f629 | 7 | #include "FATDirHandle.h" |
rs27 | 0:f0fbbfdca478 | 8 | |
rs27 | 1:19313470f629 | 9 | extern SDFileSystem sd; // definiert in main |
rs27 | 1:19313470f629 | 10 | extern Serial pc; // definiert in main |
rs27 | 1:19313470f629 | 11 | extern Buffer <char> buf; // definiert in main |
rs27 | 1:19313470f629 | 12 | extern ConfigFile cfg; // definiert in main |
rs27 | 1:19313470f629 | 13 | extern char value[BUFSIZ]; // definiert in main |
rs27 | 1:19313470f629 | 14 | |
rs27 | 1:19313470f629 | 15 | #define COMMAND_MAX 9 |
rs27 | 1:19313470f629 | 16 | #define COMMAND_LEN 7 |
rs27 | 0:f0fbbfdca478 | 17 | |
rs27 | 1:19313470f629 | 18 | const char command[COMMAND_MAX][COMMAND_LEN] = {"DATE","DEL","DIR","DUMP","FILL","HELP","LIST","SET","TIME"}; |
rs27 | 1:19313470f629 | 19 | |
rs27 | 1:19313470f629 | 20 | char buffer[100]; |
rs27 | 1:19313470f629 | 21 | |
rs27 | 1:19313470f629 | 22 | // globale Variablen |
rs27 | 1:19313470f629 | 23 | |
rs27 | 1:19313470f629 | 24 | char com_line[COM_LINE_LEN]; // Aktuelle Eingabezeile |
rs27 | 1:19313470f629 | 25 | uint8_t ComLinePtr, ComLineTop; // Cursor Position und Zeilenlänge |
rs27 | 1:19313470f629 | 26 | |
rs27 | 1:19313470f629 | 27 | uint8_t cr_flag; |
rs27 | 1:19313470f629 | 28 | |
rs27 | 1:19313470f629 | 29 | // uint16_t status[8]; |
rs27 | 0:f0fbbfdca478 | 30 | |
rs27 | 0:f0fbbfdca478 | 31 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 32 | // initialisierung |
rs27 | 0:f0fbbfdca478 | 33 | |
rs27 | 1:19313470f629 | 34 | void mon_init(void) |
rs27 | 0:f0fbbfdca478 | 35 | { |
rs27 | 1:19313470f629 | 36 | |
rs27 | 0:f0fbbfdca478 | 37 | uint8_t i; |
rs27 | 0:f0fbbfdca478 | 38 | |
rs27 | 0:f0fbbfdca478 | 39 | for (i = 0; i < COM_LINE_LEN; com_line[i++] = 0); |
rs27 | 0:f0fbbfdca478 | 40 | ComLinePtr = ComLineTop = 0; |
rs27 | 0:f0fbbfdca478 | 41 | cr_flag = false; |
rs27 | 0:f0fbbfdca478 | 42 | |
rs27 | 0:f0fbbfdca478 | 43 | // 0 Kanal ist daktiv |
rs27 | 0:f0fbbfdca478 | 44 | // 1 Rohdaten ausgeben |
rs27 | 0:f0fbbfdca478 | 45 | // 2 Temperaturwert in Float Darstellung |
rs27 | 0:f0fbbfdca478 | 46 | |
rs27 | 1:19313470f629 | 47 | /* |
rs27 | 0:f0fbbfdca478 | 48 | status[0] = 2; // Temperaturwerte ausgeben |
rs27 | 0:f0fbbfdca478 | 49 | status[1] = 0; |
rs27 | 0:f0fbbfdca478 | 50 | status[2] = 0; |
rs27 | 0:f0fbbfdca478 | 51 | status[3] = 0; |
rs27 | 0:f0fbbfdca478 | 52 | status[4] = 0; |
rs27 | 0:f0fbbfdca478 | 53 | status[5] = 0; |
rs27 | 0:f0fbbfdca478 | 54 | status[6] = 0; |
rs27 | 0:f0fbbfdca478 | 55 | status[7] = 0; |
rs27 | 1:19313470f629 | 56 | */ |
rs27 | 0:f0fbbfdca478 | 57 | } |
rs27 | 0:f0fbbfdca478 | 58 | |
rs27 | 0:f0fbbfdca478 | 59 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 60 | // destructor |
rs27 | 0:f0fbbfdca478 | 61 | |
rs27 | 1:19313470f629 | 62 | void parser (void) |
rs27 | 0:f0fbbfdca478 | 63 | { |
rs27 | 0:f0fbbfdca478 | 64 | uint8_t i, ch, tch, top, bottom, len; |
rs27 | 0:f0fbbfdca478 | 65 | int8_t res; |
rs27 | 0:f0fbbfdca478 | 66 | |
rs27 | 0:f0fbbfdca478 | 67 | // Zuerst wird der erste Buchstabe aus dem Eingabestring mit den ersten |
rs27 | 0:f0fbbfdca478 | 68 | // Buchstaben aus der Befehlstabelle verglichen |
rs27 | 0:f0fbbfdca478 | 69 | |
rs27 | 0:f0fbbfdca478 | 70 | bottom = 0; // untere Suchgrenze |
rs27 | 0:f0fbbfdca478 | 71 | top = COMMAND_MAX; // obere Suchgerenze |
rs27 | 0:f0fbbfdca478 | 72 | ch = com_line[0]; // hole erstes Suchzeichen |
rs27 | 0:f0fbbfdca478 | 73 | |
rs27 | 0:f0fbbfdca478 | 74 | do |
rs27 | 0:f0fbbfdca478 | 75 | { |
rs27 | 0:f0fbbfdca478 | 76 | i = (top + bottom) >> 1; // suche in der Mitte des Feldes beginnen |
rs27 | 0:f0fbbfdca478 | 77 | tch = command [i][0]; // Vergleichszeichen laden |
rs27 | 0:f0fbbfdca478 | 78 | if (tch == ch) break; // Zeichen gefunden |
rs27 | 0:f0fbbfdca478 | 79 | if (tch > ch) top = i; // nach unten suchen |
rs27 | 0:f0fbbfdca478 | 80 | else bottom = i; // nach oben suchen |
rs27 | 0:f0fbbfdca478 | 81 | if (bottom != 0 && top == bottom + 1) break; // kein Buchstabe gef. |
rs27 | 0:f0fbbfdca478 | 82 | |
rs27 | 0:f0fbbfdca478 | 83 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:f0fbbfdca478 | 84 | |
rs27 | 0:f0fbbfdca478 | 85 | if (tch != ch) |
rs27 | 0:f0fbbfdca478 | 86 | { |
rs27 | 0:f0fbbfdca478 | 87 | pc.printf("\nParser Kommando nicht gefunden\n"); |
rs27 | 0:f0fbbfdca478 | 88 | return; // Kommando nicht gefunden wurde |
rs27 | 0:f0fbbfdca478 | 89 | } |
rs27 | 0:f0fbbfdca478 | 90 | |
rs27 | 0:f0fbbfdca478 | 91 | // das erst Wort soll von den Übergabeparametern isoliert werden |
rs27 | 0:f0fbbfdca478 | 92 | |
rs27 | 0:f0fbbfdca478 | 93 | for (i = 0; com_line[i] != ' ' && com_line[i] != 0; i++); |
rs27 | 0:f0fbbfdca478 | 94 | len = i; |
rs27 | 0:f0fbbfdca478 | 95 | |
rs27 | 0:f0fbbfdca478 | 96 | |
rs27 | 0:f0fbbfdca478 | 97 | if (i == 0) return; |
rs27 | 0:f0fbbfdca478 | 98 | |
rs27 | 0:f0fbbfdca478 | 99 | // die Übergabparameter ermitteln und in als Indexzeiger in |
rs27 | 0:f0fbbfdca478 | 100 | // 'ComLinePtr' abspeichern |
rs27 | 0:f0fbbfdca478 | 101 | |
rs27 | 0:f0fbbfdca478 | 102 | for ( ; com_line[i] == ' ' && com_line[i] != 0; i++); |
rs27 | 0:f0fbbfdca478 | 103 | ComLinePtr = i; |
rs27 | 0:f0fbbfdca478 | 104 | |
rs27 | 0:f0fbbfdca478 | 105 | // die binäre Suche nach den restlichen Zeichen wird hier fortgesetzt |
rs27 | 0:f0fbbfdca478 | 106 | |
rs27 | 0:f0fbbfdca478 | 107 | do |
rs27 | 0:f0fbbfdca478 | 108 | { |
rs27 | 0:f0fbbfdca478 | 109 | i = (top + bottom) >> 1; // berechnen des Suchplatzes |
rs27 | 0:f0fbbfdca478 | 110 | //printf_P (PSTR("\n\rVergleich 1 com_line = [%s] und Länge = [%d]"),com_line,len); |
rs27 | 0:f0fbbfdca478 | 111 | //strcpy_P (temp, &command[i][0]); |
rs27 | 0:f0fbbfdca478 | 112 | //printf_P (PSTR("\n\rVergleich 2 command[i] = [%s] und Index = [%d]"),temp,i); |
rs27 | 0:f0fbbfdca478 | 113 | res = strncmp(com_line, &command[i][0], len); |
rs27 | 0:f0fbbfdca478 | 114 | //printf_P (PSTR("\n\rVergleich 3 res = [%d]"),res); |
rs27 | 0:f0fbbfdca478 | 115 | if (res == 0) break; // Zeichen gefunden |
rs27 | 0:f0fbbfdca478 | 116 | if (res > 0) |
rs27 | 0:f0fbbfdca478 | 117 | bottom = i; // nach unten suchen |
rs27 | 0:f0fbbfdca478 | 118 | else |
rs27 | 0:f0fbbfdca478 | 119 | top = i; // nach oben suchen |
rs27 | 0:f0fbbfdca478 | 120 | if (bottom != 0 && top == bottom + 1) break; |
rs27 | 0:f0fbbfdca478 | 121 | |
rs27 | 0:f0fbbfdca478 | 122 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:f0fbbfdca478 | 123 | |
rs27 | 0:f0fbbfdca478 | 124 | |
rs27 | 0:f0fbbfdca478 | 125 | if (res) |
rs27 | 0:f0fbbfdca478 | 126 | { |
rs27 | 0:f0fbbfdca478 | 127 | pc.printf("\nParser Kommando nicht gefunden.\n"); |
rs27 | 0:f0fbbfdca478 | 128 | } |
rs27 | 0:f0fbbfdca478 | 129 | else |
rs27 | 0:f0fbbfdca478 | 130 | { |
rs27 | 0:f0fbbfdca478 | 131 | pc.printf("\nAufruf von Funktion %d",i); |
rs27 | 0:f0fbbfdca478 | 132 | |
rs27 | 0:f0fbbfdca478 | 133 | switch(i) // Programmaufruf |
rs27 | 0:f0fbbfdca478 | 134 | { |
rs27 | 1:19313470f629 | 135 | case 0: date(); break; |
rs27 | 1:19313470f629 | 136 | case 1: del(); break; |
rs27 | 1:19313470f629 | 137 | case 2: dir(); break; |
rs27 | 1:19313470f629 | 138 | case 3: dump(); break; |
rs27 | 1:19313470f629 | 139 | case 4: fill(); break; |
rs27 | 1:19313470f629 | 140 | case 5: help(); break; |
rs27 | 1:19313470f629 | 141 | case 6: list(); break; |
rs27 | 1:19313470f629 | 142 | case 7: set(); break; |
rs27 | 1:19313470f629 | 143 | case 8: time(); break; |
rs27 | 1:19313470f629 | 144 | |
rs27 | 0:f0fbbfdca478 | 145 | } |
rs27 | 0:f0fbbfdca478 | 146 | } |
rs27 | 0:f0fbbfdca478 | 147 | } |
rs27 | 0:f0fbbfdca478 | 148 | |
rs27 | 0:f0fbbfdca478 | 149 | |
rs27 | 0:f0fbbfdca478 | 150 | |
rs27 | 0:f0fbbfdca478 | 151 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 152 | // eine Zeile aus dem Eingangsbuffer lesen |
rs27 | 0:f0fbbfdca478 | 153 | |
rs27 | 1:19313470f629 | 154 | void get_line(void) |
rs27 | 0:f0fbbfdca478 | 155 | { |
rs27 | 0:f0fbbfdca478 | 156 | char ch; |
rs27 | 0:f0fbbfdca478 | 157 | uint8_t i; |
rs27 | 0:f0fbbfdca478 | 158 | |
rs27 | 0:f0fbbfdca478 | 159 | get_ch(); |
rs27 | 0:f0fbbfdca478 | 160 | if (cr_flag) // Neue Eingabezeile |
rs27 | 0:f0fbbfdca478 | 161 | { |
rs27 | 0:f0fbbfdca478 | 162 | if (com_line[0] != 0) |
rs27 | 0:f0fbbfdca478 | 163 | { |
rs27 | 0:f0fbbfdca478 | 164 | // uart_puts(com_line); // zum Testen => später wird der parcer aufgerufen |
rs27 | 0:f0fbbfdca478 | 165 | // Zeichenkette in Großbuchstaben umwandeln |
rs27 | 0:f0fbbfdca478 | 166 | |
rs27 | 0:f0fbbfdca478 | 167 | // printf_P (PSTR("\n monitor ")); |
rs27 | 0:f0fbbfdca478 | 168 | for (i = 0; com_line[i] != 0; i++) |
rs27 | 0:f0fbbfdca478 | 169 | { |
rs27 | 0:f0fbbfdca478 | 170 | ch = com_line[i]; |
rs27 | 0:f0fbbfdca478 | 171 | ch = toupper(ch); // Nur Großbuchstaben |
rs27 | 0:f0fbbfdca478 | 172 | com_line[i] = ch; |
rs27 | 0:f0fbbfdca478 | 173 | // pc.printf(("\n[%02x] %c"),ch,ch); |
rs27 | 0:f0fbbfdca478 | 174 | if (ch == ' ') i = COM_LINE_LEN; |
rs27 | 0:f0fbbfdca478 | 175 | } |
rs27 | 0:f0fbbfdca478 | 176 | // pc.printf(("\n")); |
rs27 | 0:f0fbbfdca478 | 177 | parser(); // Parcer wird aufgerufen |
rs27 | 0:f0fbbfdca478 | 178 | } |
rs27 | 0:f0fbbfdca478 | 179 | |
rs27 | 0:f0fbbfdca478 | 180 | for (i=0; i < COM_LINE_LEN; com_line[i++] = 0); |
rs27 | 0:f0fbbfdca478 | 181 | ComLinePtr = ComLineTop = 0; |
rs27 | 0:f0fbbfdca478 | 182 | cr_flag = 0; |
rs27 | 0:f0fbbfdca478 | 183 | } |
rs27 | 0:f0fbbfdca478 | 184 | } |
rs27 | 0:f0fbbfdca478 | 185 | |
rs27 | 0:f0fbbfdca478 | 186 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 187 | // eine Zeichen aus dem Eingangsbuffer lesen |
rs27 | 0:f0fbbfdca478 | 188 | |
rs27 | 1:19313470f629 | 189 | void get_ch (void) |
rs27 | 0:f0fbbfdca478 | 190 | { |
rs27 | 0:f0fbbfdca478 | 191 | char ch; |
rs27 | 0:f0fbbfdca478 | 192 | |
rs27 | 0:f0fbbfdca478 | 193 | if (!buf.available()) return; // kein Zeichen vorhanden |
rs27 | 0:f0fbbfdca478 | 194 | |
rs27 | 0:f0fbbfdca478 | 195 | ch = buf.get(); // hole das Zeichen |
rs27 | 0:f0fbbfdca478 | 196 | // printf("mon_line: %c %02x\n",ch,ch); // nur zum Test |
rs27 | 0:f0fbbfdca478 | 197 | |
rs27 | 0:f0fbbfdca478 | 198 | switch(ch) |
rs27 | 0:f0fbbfdca478 | 199 | { |
rs27 | 0:f0fbbfdca478 | 200 | case '\r': // CARRIAGE RETURN |
rs27 | 0:f0fbbfdca478 | 201 | cr_flag = true; |
rs27 | 0:f0fbbfdca478 | 202 | break; |
rs27 | 0:f0fbbfdca478 | 203 | |
rs27 | 0:f0fbbfdca478 | 204 | case '\n': // LF empfangen |
rs27 | 0:f0fbbfdca478 | 205 | cr_flag = true; |
rs27 | 0:f0fbbfdca478 | 206 | break; |
rs27 | 0:f0fbbfdca478 | 207 | |
rs27 | 0:f0fbbfdca478 | 208 | default: // Normales Zeichen |
rs27 | 0:f0fbbfdca478 | 209 | if (~iscntrl(ch)) |
rs27 | 0:f0fbbfdca478 | 210 | { |
rs27 | 0:f0fbbfdca478 | 211 | com_line[ComLinePtr] = ch; // Zeichen einfuegen |
rs27 | 0:f0fbbfdca478 | 212 | ComLinePtr++; |
rs27 | 0:f0fbbfdca478 | 213 | } |
rs27 | 0:f0fbbfdca478 | 214 | break; |
rs27 | 0:f0fbbfdca478 | 215 | |
rs27 | 0:f0fbbfdca478 | 216 | } // Ende SWITCH |
rs27 | 0:f0fbbfdca478 | 217 | |
rs27 | 0:f0fbbfdca478 | 218 | if (ComLinePtr >= 80) cr_flag = 1; // Zeilenüberlauf ? |
rs27 | 0:f0fbbfdca478 | 219 | |
rs27 | 0:f0fbbfdca478 | 220 | } |
rs27 | 0:f0fbbfdca478 | 221 | |
rs27 | 0:f0fbbfdca478 | 222 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 223 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 224 | |
rs27 | 1:19313470f629 | 225 | void date(void) |
rs27 | 0:f0fbbfdca478 | 226 | { |
rs27 | 0:f0fbbfdca478 | 227 | pc.printf("\nin date"); |
rs27 | 0:f0fbbfdca478 | 228 | } |
rs27 | 0:f0fbbfdca478 | 229 | |
rs27 | 0:f0fbbfdca478 | 230 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 231 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 232 | |
rs27 | 1:19313470f629 | 233 | void dump(void) |
rs27 | 0:f0fbbfdca478 | 234 | { |
rs27 | 0:f0fbbfdca478 | 235 | pc.printf("\nin dump"); |
rs27 | 0:f0fbbfdca478 | 236 | } |
rs27 | 0:f0fbbfdca478 | 237 | |
rs27 | 0:f0fbbfdca478 | 238 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 239 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 240 | |
rs27 | 1:19313470f629 | 241 | void help(void) |
rs27 | 0:f0fbbfdca478 | 242 | { |
rs27 | 0:f0fbbfdca478 | 243 | pc.printf("\n -- help ------------------------"); |
rs27 | 0:f0fbbfdca478 | 244 | pc.printf("\n set index [val] Sensor auswaehlen"); |
rs27 | 0:f0fbbfdca478 | 245 | pc.printf("\n"); |
rs27 | 1:19313470f629 | 246 | pc.printf("\n -- files ------------------------"); |
rs27 | 1:19313470f629 | 247 | pc.printf("\n dir >> Dateien anzeigen"); |
rs27 | 1:19313470f629 | 248 | pc.printf("\n list name >> den Inhalte einer Datei anzeigen"); |
rs27 | 1:19313470f629 | 249 | pc.printf("\n del name >> eine Datei loeschen"); |
rs27 | 1:19313470f629 | 250 | pc.printf("\n fill name [zeilen] >> eine Datei anlegen und fuellen"); |
rs27 | 1:19313470f629 | 251 | pc.printf("\n"); |
rs27 | 0:f0fbbfdca478 | 252 | } |
rs27 | 0:f0fbbfdca478 | 253 | |
rs27 | 0:f0fbbfdca478 | 254 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 255 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 256 | |
rs27 | 1:19313470f629 | 257 | void set(void) |
rs27 | 0:f0fbbfdca478 | 258 | { |
rs27 | 1:19313470f629 | 259 | |
rs27 | 1:19313470f629 | 260 | int n; |
rs27 | 1:19313470f629 | 261 | char name[20], wert[20]; |
rs27 | 0:f0fbbfdca478 | 262 | |
rs27 | 1:19313470f629 | 263 | n = sscanf(&com_line[ComLinePtr],"%s %s",name,wert); |
rs27 | 0:f0fbbfdca478 | 264 | |
rs27 | 0:f0fbbfdca478 | 265 | switch (n) |
rs27 | 0:f0fbbfdca478 | 266 | { |
rs27 | 1:19313470f629 | 267 | case -1: pc.printf("\n list config file"); |
rs27 | 1:19313470f629 | 268 | |
rs27 | 1:19313470f629 | 269 | cfg.read("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 270 | |
rs27 | 0:f0fbbfdca478 | 271 | pc.printf("\n Index >> Sonsor 0 bis 7"); |
rs27 | 0:f0fbbfdca478 | 272 | pc.printf("\n wert >> 0 = inaktiv, 1 = Rohwerte, 2 = errechneter Wert"); |
rs27 | 0:f0fbbfdca478 | 273 | break; |
rs27 | 0:f0fbbfdca478 | 274 | |
rs27 | 1:19313470f629 | 275 | case 1: pc.printf("\n list config value"); |
rs27 | 1:19313470f629 | 276 | |
rs27 | 1:19313470f629 | 277 | cfg.read("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 278 | |
rs27 | 1:19313470f629 | 279 | if (cfg.getValue(name, &value[0], sizeof(value))) |
rs27 | 1:19313470f629 | 280 | { |
rs27 | 1:19313470f629 | 281 | pc.printf("\n'%s'='%s'", name, value); |
rs27 | 1:19313470f629 | 282 | } |
rs27 | 0:f0fbbfdca478 | 283 | break; |
rs27 | 0:f0fbbfdca478 | 284 | |
rs27 | 1:19313470f629 | 285 | case 2: pc.printf("\n'%s' = '%s'",name,wert); |
rs27 | 1:19313470f629 | 286 | |
rs27 | 1:19313470f629 | 287 | cfg.setValue(name, wert); |
rs27 | 1:19313470f629 | 288 | cfg.write("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 289 | |
rs27 | 0:f0fbbfdca478 | 290 | break; |
rs27 | 0:f0fbbfdca478 | 291 | } // end switch |
rs27 | 1:19313470f629 | 292 | |
rs27 | 0:f0fbbfdca478 | 293 | } |
rs27 | 0:f0fbbfdca478 | 294 | |
rs27 | 0:f0fbbfdca478 | 295 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 296 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 297 | |
rs27 | 1:19313470f629 | 298 | void time(void) |
rs27 | 0:f0fbbfdca478 | 299 | { |
rs27 | 0:f0fbbfdca478 | 300 | pc.printf("\nin timer"); |
rs27 | 0:f0fbbfdca478 | 301 | } |
rs27 | 0:f0fbbfdca478 | 302 | |
rs27 | 1:19313470f629 | 303 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 304 | // monitor Aufruf dir |
rs27 | 1:19313470f629 | 305 | // |
rs27 | 1:19313470f629 | 306 | // weiter Infos siehe auch |
rs27 | 1:19313470f629 | 307 | // http://elm-chan.org/fsw/ff/00index_e.html |
rs27 | 1:19313470f629 | 308 | // |
rs27 | 1:19313470f629 | 309 | void dir(void) |
rs27 | 1:19313470f629 | 310 | { |
rs27 | 1:19313470f629 | 311 | long size; |
rs27 | 1:19313470f629 | 312 | |
rs27 | 1:19313470f629 | 313 | DIR *d; |
rs27 | 1:19313470f629 | 314 | struct dirent *p; |
rs27 | 1:19313470f629 | 315 | |
rs27 | 1:19313470f629 | 316 | d = opendir("/sd"); |
rs27 | 1:19313470f629 | 317 | if (d != NULL) |
rs27 | 1:19313470f629 | 318 | { |
rs27 | 1:19313470f629 | 319 | while ((p = readdir(d)) != NULL) |
rs27 | 1:19313470f629 | 320 | { |
rs27 | 1:19313470f629 | 321 | sprintf(buffer,"/sd/%s",p->d_name); |
rs27 | 1:19313470f629 | 322 | pc.printf("\n %s", p->d_name); |
rs27 | 1:19313470f629 | 323 | FILE * f = fopen(buffer, "r"); |
rs27 | 1:19313470f629 | 324 | fseek(f, 0, SEEK_END); // seek to end of file |
rs27 | 1:19313470f629 | 325 | size = ftell(f); // get current file pointer |
rs27 | 1:19313470f629 | 326 | pc.printf(" %ld bytes ",size); |
rs27 | 1:19313470f629 | 327 | |
rs27 | 1:19313470f629 | 328 | time_t fattime = get_fattime(); |
rs27 | 1:19313470f629 | 329 | strftime(buffer, 40, "%a,%d %m %Y.%H:%M:%S", localtime(&fattime)); |
rs27 | 1:19313470f629 | 330 | pc.printf(" %s ", buffer); |
rs27 | 1:19313470f629 | 331 | |
rs27 | 1:19313470f629 | 332 | fclose(f); |
rs27 | 1:19313470f629 | 333 | } |
rs27 | 1:19313470f629 | 334 | |
rs27 | 1:19313470f629 | 335 | } |
rs27 | 1:19313470f629 | 336 | else |
rs27 | 1:19313470f629 | 337 | { |
rs27 | 1:19313470f629 | 338 | pc.printf("\nCould not open directory!\n"); |
rs27 | 1:19313470f629 | 339 | } |
rs27 | 1:19313470f629 | 340 | closedir(d); |
rs27 | 1:19313470f629 | 341 | |
rs27 | 1:19313470f629 | 342 | |
rs27 | 1:19313470f629 | 343 | FATFS* fs; |
rs27 | 1:19313470f629 | 344 | DWORD fre_clust; |
rs27 | 1:19313470f629 | 345 | f_getfree("0:",&fre_clust,&fs); |
rs27 | 1:19313470f629 | 346 | const float frs = float(fs->csize)*float(fs->free_clust) |
rs27 | 1:19313470f629 | 347 | #if _MAX_SS != 512 |
rs27 | 1:19313470f629 | 348 | *(fs->ssize); |
rs27 | 1:19313470f629 | 349 | #else |
rs27 | 1:19313470f629 | 350 | *512; |
rs27 | 1:19313470f629 | 351 | #endif |
rs27 | 1:19313470f629 | 352 | pc.printf("\n\nfree space = %f GB",frs/1073741824.0); |
rs27 | 1:19313470f629 | 353 | |
rs27 | 1:19313470f629 | 354 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 355 | } |
rs27 | 1:19313470f629 | 356 | |
rs27 | 1:19313470f629 | 357 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 358 | // monitor Aufruf list |
rs27 | 1:19313470f629 | 359 | |
rs27 | 1:19313470f629 | 360 | void list(void) |
rs27 | 1:19313470f629 | 361 | { |
rs27 | 1:19313470f629 | 362 | char dname[25]; |
rs27 | 1:19313470f629 | 363 | int ch; |
rs27 | 1:19313470f629 | 364 | |
rs27 | 1:19313470f629 | 365 | sscanf(&com_line[ComLinePtr],"%s",dname); |
rs27 | 1:19313470f629 | 366 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 367 | pc.printf("\nlist, file %s \n",buffer); |
rs27 | 1:19313470f629 | 368 | FILE * fp = fopen(buffer, "r"); |
rs27 | 1:19313470f629 | 369 | if(fp == NULL) |
rs27 | 1:19313470f629 | 370 | { |
rs27 | 1:19313470f629 | 371 | pc.printf("\nCould not open file for read\n\r"); |
rs27 | 1:19313470f629 | 372 | return; |
rs27 | 1:19313470f629 | 373 | } |
rs27 | 1:19313470f629 | 374 | |
rs27 | 1:19313470f629 | 375 | // mit fgets werden die Zeile einzeln gelesen, wenn die Länge < 64 Zeichen ist |
rs27 | 1:19313470f629 | 376 | |
rs27 | 1:19313470f629 | 377 | while (1) // list src to pc |
rs27 | 1:19313470f629 | 378 | { |
rs27 | 1:19313470f629 | 379 | ch = fgetc(fp); // until src EOF read. |
rs27 | 1:19313470f629 | 380 | if (ch == EOF) break; |
rs27 | 1:19313470f629 | 381 | pc.putc(ch); |
rs27 | 1:19313470f629 | 382 | } |
rs27 | 1:19313470f629 | 383 | |
rs27 | 1:19313470f629 | 384 | fclose(fp); |
rs27 | 1:19313470f629 | 385 | |
rs27 | 1:19313470f629 | 386 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 387 | } |
rs27 | 1:19313470f629 | 388 | |
rs27 | 1:19313470f629 | 389 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 390 | // monitor Aufruf del |
rs27 | 1:19313470f629 | 391 | |
rs27 | 1:19313470f629 | 392 | void del(void) |
rs27 | 1:19313470f629 | 393 | { |
rs27 | 1:19313470f629 | 394 | char dname[25]; |
rs27 | 1:19313470f629 | 395 | char buffer[40]; |
rs27 | 1:19313470f629 | 396 | |
rs27 | 1:19313470f629 | 397 | sscanf(&com_line[ComLinePtr],"%s",dname); |
rs27 | 1:19313470f629 | 398 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 399 | pc.printf("\ndelete file %s",buffer); |
rs27 | 1:19313470f629 | 400 | remove(buffer); |
rs27 | 1:19313470f629 | 401 | pc.printf("\ndone"); |
rs27 | 1:19313470f629 | 402 | } |
rs27 | 1:19313470f629 | 403 | |
rs27 | 1:19313470f629 | 404 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 405 | // monitor Aufruf fill |
rs27 | 1:19313470f629 | 406 | |
rs27 | 1:19313470f629 | 407 | void fill(void) |
rs27 | 1:19313470f629 | 408 | { |
rs27 | 1:19313470f629 | 409 | char dname[25]; |
rs27 | 1:19313470f629 | 410 | char buffer[40]; |
rs27 | 1:19313470f629 | 411 | int n = 20; |
rs27 | 1:19313470f629 | 412 | |
rs27 | 1:19313470f629 | 413 | sscanf(&com_line[ComLinePtr],"%s %d",dname,&n); |
rs27 | 1:19313470f629 | 414 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 415 | pc.printf("\nfill file %s \n",buffer); |
rs27 | 1:19313470f629 | 416 | FILE *fp = fopen(buffer, "w"); |
rs27 | 1:19313470f629 | 417 | if(fp == NULL) |
rs27 | 1:19313470f629 | 418 | { |
rs27 | 1:19313470f629 | 419 | pc.printf("Could not open file for write\n"); |
rs27 | 1:19313470f629 | 420 | } |
rs27 | 1:19313470f629 | 421 | for (int i = 0; i<n; i++) |
rs27 | 1:19313470f629 | 422 | { |
rs27 | 1:19313470f629 | 423 | fprintf(fp, "\nschreibe eine Zeile %d ",i); |
rs27 | 1:19313470f629 | 424 | } |
rs27 | 1:19313470f629 | 425 | fclose(fp); |
rs27 | 1:19313470f629 | 426 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 427 | } |
rs27 | 1:19313470f629 | 428 | |
rs27 | 1:19313470f629 | 429 |