monitor

Dependents:   09_PT1000 10_PT1000 11_PT1000

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?

UserRevisionLine numberNew 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