Monitor für das Tasterprogramm
Dependents: 19_Taster_BSW_oo 19_Taster_a
Fork of monitor by
monitor.cpp@7:f5bfddb84d63, 2014-09-07 (annotated)
- Committer:
- Sven3010
- Date:
- Sun Sep 07 12:08:09 2014 +0000
- Revision:
- 7:f5bfddb84d63
- Parent:
- 6:e5f5e56ffc50
- Child:
- 8:99a94e782c8a
070914;
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 | 6:e5f5e56ffc50 | 8 | #include "ventiel.h" |
rs27 | 0:f0fbbfdca478 | 9 | |
rs27 | 1:19313470f629 | 10 | extern SDFileSystem sd; // definiert in main |
rs27 | 1:19313470f629 | 11 | extern Serial pc; // definiert in main |
rs27 | 2:e330478fb0b6 | 12 | extern Serial com; // definiert in main |
rs27 | 6:e5f5e56ffc50 | 13 | extern ventiel magnet; // definiert in main |
rs27 | 1:19313470f629 | 14 | extern Buffer <char> buf; // definiert in main |
rs27 | 1:19313470f629 | 15 | extern ConfigFile cfg; // definiert in main |
rs27 | 1:19313470f629 | 16 | extern char value[BUFSIZ]; // definiert in main |
rs27 | 2:e330478fb0b6 | 17 | extern float soll_wert; // definiert in main |
Sven3010 | 7:f5bfddb84d63 | 18 | extern float korr_wert; // definiert in main |
rs27 | 2:e330478fb0b6 | 19 | extern bool t_flag; // definiert in main |
rs27 | 2:e330478fb0b6 | 20 | extern bool f_flag; // definiert in main |
rs27 | 2:e330478fb0b6 | 21 | extern int drops; // definiert in main |
rs27 | 4:83dbae473d1f | 22 | extern int tropfperiode; // definiert in main |
rs27 | 1:19313470f629 | 23 | |
Sven3010 | 7:f5bfddb84d63 | 24 | #define COMMAND_MAX 15 |
rs27 | 1:19313470f629 | 25 | #define COMMAND_LEN 7 |
rs27 | 0:f0fbbfdca478 | 26 | |
Sven3010 | 7:f5bfddb84d63 | 27 | const char command[COMMAND_MAX][COMMAND_LEN] = {"CYCLE","DATE","DEL","DIR","DROPS","DUMP","FILL","GO","HELP","KORR","LIST","SET","SOLL","STOPP","TIME"}; |
rs27 | 1:19313470f629 | 28 | |
rs27 | 1:19313470f629 | 29 | char buffer[100]; |
rs27 | 1:19313470f629 | 30 | |
rs27 | 1:19313470f629 | 31 | // globale Variablen |
rs27 | 1:19313470f629 | 32 | |
rs27 | 1:19313470f629 | 33 | char com_line[COM_LINE_LEN]; // Aktuelle Eingabezeile |
rs27 | 1:19313470f629 | 34 | uint8_t ComLinePtr, ComLineTop; // Cursor Position und Zeilenlänge |
rs27 | 1:19313470f629 | 35 | |
rs27 | 1:19313470f629 | 36 | uint8_t cr_flag; |
rs27 | 1:19313470f629 | 37 | |
rs27 | 1:19313470f629 | 38 | // uint16_t status[8]; |
rs27 | 0:f0fbbfdca478 | 39 | |
rs27 | 0:f0fbbfdca478 | 40 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 41 | // initialisierung |
rs27 | 0:f0fbbfdca478 | 42 | |
rs27 | 1:19313470f629 | 43 | void mon_init(void) |
rs27 | 0:f0fbbfdca478 | 44 | { |
rs27 | 1:19313470f629 | 45 | |
rs27 | 0:f0fbbfdca478 | 46 | uint8_t i; |
rs27 | 0:f0fbbfdca478 | 47 | |
rs27 | 0:f0fbbfdca478 | 48 | for (i = 0; i < COM_LINE_LEN; com_line[i++] = 0); |
rs27 | 0:f0fbbfdca478 | 49 | ComLinePtr = ComLineTop = 0; |
rs27 | 0:f0fbbfdca478 | 50 | cr_flag = false; |
rs27 | 0:f0fbbfdca478 | 51 | |
rs27 | 0:f0fbbfdca478 | 52 | // 0 Kanal ist daktiv |
rs27 | 0:f0fbbfdca478 | 53 | // 1 Rohdaten ausgeben |
rs27 | 0:f0fbbfdca478 | 54 | // 2 Temperaturwert in Float Darstellung |
rs27 | 0:f0fbbfdca478 | 55 | |
rs27 | 1:19313470f629 | 56 | /* |
rs27 | 0:f0fbbfdca478 | 57 | status[0] = 2; // Temperaturwerte ausgeben |
rs27 | 0:f0fbbfdca478 | 58 | status[1] = 0; |
rs27 | 0:f0fbbfdca478 | 59 | status[2] = 0; |
rs27 | 0:f0fbbfdca478 | 60 | status[3] = 0; |
rs27 | 0:f0fbbfdca478 | 61 | status[4] = 0; |
rs27 | 0:f0fbbfdca478 | 62 | status[5] = 0; |
rs27 | 0:f0fbbfdca478 | 63 | status[6] = 0; |
rs27 | 0:f0fbbfdca478 | 64 | status[7] = 0; |
rs27 | 1:19313470f629 | 65 | */ |
rs27 | 0:f0fbbfdca478 | 66 | } |
rs27 | 0:f0fbbfdca478 | 67 | |
rs27 | 0:f0fbbfdca478 | 68 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 69 | // destructor |
rs27 | 0:f0fbbfdca478 | 70 | |
rs27 | 1:19313470f629 | 71 | void parser (void) |
rs27 | 0:f0fbbfdca478 | 72 | { |
rs27 | 0:f0fbbfdca478 | 73 | uint8_t i, ch, tch, top, bottom, len; |
rs27 | 0:f0fbbfdca478 | 74 | int8_t res; |
rs27 | 0:f0fbbfdca478 | 75 | |
rs27 | 0:f0fbbfdca478 | 76 | // Zuerst wird der erste Buchstabe aus dem Eingabestring mit den ersten |
rs27 | 0:f0fbbfdca478 | 77 | // Buchstaben aus der Befehlstabelle verglichen |
rs27 | 0:f0fbbfdca478 | 78 | |
rs27 | 0:f0fbbfdca478 | 79 | bottom = 0; // untere Suchgrenze |
rs27 | 0:f0fbbfdca478 | 80 | top = COMMAND_MAX; // obere Suchgerenze |
rs27 | 0:f0fbbfdca478 | 81 | ch = com_line[0]; // hole erstes Suchzeichen |
rs27 | 0:f0fbbfdca478 | 82 | |
rs27 | 0:f0fbbfdca478 | 83 | do |
rs27 | 0:f0fbbfdca478 | 84 | { |
rs27 | 0:f0fbbfdca478 | 85 | i = (top + bottom) >> 1; // suche in der Mitte des Feldes beginnen |
rs27 | 0:f0fbbfdca478 | 86 | tch = command [i][0]; // Vergleichszeichen laden |
rs27 | 0:f0fbbfdca478 | 87 | if (tch == ch) break; // Zeichen gefunden |
rs27 | 0:f0fbbfdca478 | 88 | if (tch > ch) top = i; // nach unten suchen |
rs27 | 0:f0fbbfdca478 | 89 | else bottom = i; // nach oben suchen |
rs27 | 0:f0fbbfdca478 | 90 | if (bottom != 0 && top == bottom + 1) break; // kein Buchstabe gef. |
rs27 | 0:f0fbbfdca478 | 91 | |
rs27 | 0:f0fbbfdca478 | 92 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:f0fbbfdca478 | 93 | |
rs27 | 0:f0fbbfdca478 | 94 | if (tch != ch) |
rs27 | 0:f0fbbfdca478 | 95 | { |
rs27 | 0:f0fbbfdca478 | 96 | pc.printf("\nParser Kommando nicht gefunden\n"); |
rs27 | 0:f0fbbfdca478 | 97 | return; // Kommando nicht gefunden wurde |
rs27 | 0:f0fbbfdca478 | 98 | } |
rs27 | 0:f0fbbfdca478 | 99 | |
rs27 | 0:f0fbbfdca478 | 100 | // das erst Wort soll von den Übergabeparametern isoliert werden |
rs27 | 0:f0fbbfdca478 | 101 | |
rs27 | 0:f0fbbfdca478 | 102 | for (i = 0; com_line[i] != ' ' && com_line[i] != 0; i++); |
rs27 | 0:f0fbbfdca478 | 103 | len = i; |
rs27 | 0:f0fbbfdca478 | 104 | |
rs27 | 0:f0fbbfdca478 | 105 | |
rs27 | 0:f0fbbfdca478 | 106 | if (i == 0) return; |
rs27 | 0:f0fbbfdca478 | 107 | |
rs27 | 0:f0fbbfdca478 | 108 | // die Übergabparameter ermitteln und in als Indexzeiger in |
rs27 | 0:f0fbbfdca478 | 109 | // 'ComLinePtr' abspeichern |
rs27 | 0:f0fbbfdca478 | 110 | |
rs27 | 0:f0fbbfdca478 | 111 | for ( ; com_line[i] == ' ' && com_line[i] != 0; i++); |
rs27 | 0:f0fbbfdca478 | 112 | ComLinePtr = i; |
rs27 | 0:f0fbbfdca478 | 113 | |
rs27 | 0:f0fbbfdca478 | 114 | // die binäre Suche nach den restlichen Zeichen wird hier fortgesetzt |
rs27 | 0:f0fbbfdca478 | 115 | |
rs27 | 0:f0fbbfdca478 | 116 | do |
rs27 | 0:f0fbbfdca478 | 117 | { |
rs27 | 0:f0fbbfdca478 | 118 | i = (top + bottom) >> 1; // berechnen des Suchplatzes |
rs27 | 0:f0fbbfdca478 | 119 | //printf_P (PSTR("\n\rVergleich 1 com_line = [%s] und Länge = [%d]"),com_line,len); |
rs27 | 0:f0fbbfdca478 | 120 | //strcpy_P (temp, &command[i][0]); |
rs27 | 0:f0fbbfdca478 | 121 | //printf_P (PSTR("\n\rVergleich 2 command[i] = [%s] und Index = [%d]"),temp,i); |
rs27 | 0:f0fbbfdca478 | 122 | res = strncmp(com_line, &command[i][0], len); |
rs27 | 0:f0fbbfdca478 | 123 | //printf_P (PSTR("\n\rVergleich 3 res = [%d]"),res); |
rs27 | 0:f0fbbfdca478 | 124 | if (res == 0) break; // Zeichen gefunden |
rs27 | 0:f0fbbfdca478 | 125 | if (res > 0) |
rs27 | 0:f0fbbfdca478 | 126 | bottom = i; // nach unten suchen |
rs27 | 0:f0fbbfdca478 | 127 | else |
rs27 | 0:f0fbbfdca478 | 128 | top = i; // nach oben suchen |
rs27 | 0:f0fbbfdca478 | 129 | if (bottom != 0 && top == bottom + 1) break; |
rs27 | 0:f0fbbfdca478 | 130 | |
rs27 | 0:f0fbbfdca478 | 131 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:f0fbbfdca478 | 132 | |
rs27 | 0:f0fbbfdca478 | 133 | |
rs27 | 0:f0fbbfdca478 | 134 | if (res) |
rs27 | 0:f0fbbfdca478 | 135 | { |
rs27 | 0:f0fbbfdca478 | 136 | pc.printf("\nParser Kommando nicht gefunden.\n"); |
rs27 | 0:f0fbbfdca478 | 137 | } |
rs27 | 0:f0fbbfdca478 | 138 | else |
rs27 | 0:f0fbbfdca478 | 139 | { |
rs27 | 0:f0fbbfdca478 | 140 | pc.printf("\nAufruf von Funktion %d",i); |
rs27 | 0:f0fbbfdca478 | 141 | |
rs27 | 0:f0fbbfdca478 | 142 | switch(i) // Programmaufruf |
rs27 | 0:f0fbbfdca478 | 143 | { |
rs27 | 4:83dbae473d1f | 144 | case 0: cycle(); break; |
rs27 | 4:83dbae473d1f | 145 | case 1: date(); break; |
rs27 | 4:83dbae473d1f | 146 | case 2: del(); break; |
rs27 | 4:83dbae473d1f | 147 | case 3: dir(); break; |
rs27 | 4:83dbae473d1f | 148 | case 4: func_drops(); break; |
rs27 | 4:83dbae473d1f | 149 | case 5: dump(); break; |
rs27 | 4:83dbae473d1f | 150 | case 6: fill(); break; |
rs27 | 4:83dbae473d1f | 151 | case 7: go(); break; |
rs27 | 4:83dbae473d1f | 152 | case 8: help(); break; |
Sven3010 | 7:f5bfddb84d63 | 153 | case 9: korr(); break; |
Sven3010 | 7:f5bfddb84d63 | 154 | case 10: list(); break; |
Sven3010 | 7:f5bfddb84d63 | 155 | case 11: set(); break; |
Sven3010 | 7:f5bfddb84d63 | 156 | case 12: soll(); break; |
Sven3010 | 7:f5bfddb84d63 | 157 | case 13: stop(); break; |
Sven3010 | 7:f5bfddb84d63 | 158 | case 14: time(); break; |
rs27 | 0:f0fbbfdca478 | 159 | } |
rs27 | 0:f0fbbfdca478 | 160 | } |
rs27 | 0:f0fbbfdca478 | 161 | } |
rs27 | 0:f0fbbfdca478 | 162 | |
rs27 | 0:f0fbbfdca478 | 163 | |
rs27 | 0:f0fbbfdca478 | 164 | |
rs27 | 0:f0fbbfdca478 | 165 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 166 | // eine Zeile aus dem Eingangsbuffer lesen |
rs27 | 0:f0fbbfdca478 | 167 | |
rs27 | 1:19313470f629 | 168 | void get_line(void) |
rs27 | 0:f0fbbfdca478 | 169 | { |
rs27 | 0:f0fbbfdca478 | 170 | char ch; |
rs27 | 0:f0fbbfdca478 | 171 | uint8_t i; |
rs27 | 0:f0fbbfdca478 | 172 | |
rs27 | 0:f0fbbfdca478 | 173 | get_ch(); |
rs27 | 0:f0fbbfdca478 | 174 | if (cr_flag) // Neue Eingabezeile |
rs27 | 0:f0fbbfdca478 | 175 | { |
rs27 | 0:f0fbbfdca478 | 176 | if (com_line[0] != 0) |
rs27 | 0:f0fbbfdca478 | 177 | { |
rs27 | 0:f0fbbfdca478 | 178 | // uart_puts(com_line); // zum Testen => später wird der parcer aufgerufen |
rs27 | 0:f0fbbfdca478 | 179 | // Zeichenkette in Großbuchstaben umwandeln |
rs27 | 0:f0fbbfdca478 | 180 | |
rs27 | 0:f0fbbfdca478 | 181 | // printf_P (PSTR("\n monitor ")); |
rs27 | 0:f0fbbfdca478 | 182 | for (i = 0; com_line[i] != 0; i++) |
rs27 | 0:f0fbbfdca478 | 183 | { |
rs27 | 0:f0fbbfdca478 | 184 | ch = com_line[i]; |
rs27 | 0:f0fbbfdca478 | 185 | ch = toupper(ch); // Nur Großbuchstaben |
rs27 | 0:f0fbbfdca478 | 186 | com_line[i] = ch; |
rs27 | 0:f0fbbfdca478 | 187 | // pc.printf(("\n[%02x] %c"),ch,ch); |
rs27 | 0:f0fbbfdca478 | 188 | if (ch == ' ') i = COM_LINE_LEN; |
rs27 | 0:f0fbbfdca478 | 189 | } |
rs27 | 0:f0fbbfdca478 | 190 | // pc.printf(("\n")); |
rs27 | 0:f0fbbfdca478 | 191 | parser(); // Parcer wird aufgerufen |
rs27 | 0:f0fbbfdca478 | 192 | } |
rs27 | 0:f0fbbfdca478 | 193 | |
rs27 | 0:f0fbbfdca478 | 194 | for (i=0; i < COM_LINE_LEN; com_line[i++] = 0); |
rs27 | 0:f0fbbfdca478 | 195 | ComLinePtr = ComLineTop = 0; |
rs27 | 0:f0fbbfdca478 | 196 | cr_flag = 0; |
rs27 | 0:f0fbbfdca478 | 197 | } |
rs27 | 0:f0fbbfdca478 | 198 | } |
rs27 | 0:f0fbbfdca478 | 199 | |
rs27 | 0:f0fbbfdca478 | 200 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 201 | // eine Zeichen aus dem Eingangsbuffer lesen |
rs27 | 0:f0fbbfdca478 | 202 | |
rs27 | 1:19313470f629 | 203 | void get_ch (void) |
rs27 | 0:f0fbbfdca478 | 204 | { |
rs27 | 0:f0fbbfdca478 | 205 | char ch; |
rs27 | 0:f0fbbfdca478 | 206 | |
rs27 | 0:f0fbbfdca478 | 207 | if (!buf.available()) return; // kein Zeichen vorhanden |
rs27 | 0:f0fbbfdca478 | 208 | |
rs27 | 0:f0fbbfdca478 | 209 | ch = buf.get(); // hole das Zeichen |
rs27 | 0:f0fbbfdca478 | 210 | // printf("mon_line: %c %02x\n",ch,ch); // nur zum Test |
rs27 | 0:f0fbbfdca478 | 211 | |
rs27 | 0:f0fbbfdca478 | 212 | switch(ch) |
rs27 | 0:f0fbbfdca478 | 213 | { |
rs27 | 0:f0fbbfdca478 | 214 | case '\r': // CARRIAGE RETURN |
rs27 | 0:f0fbbfdca478 | 215 | cr_flag = true; |
rs27 | 0:f0fbbfdca478 | 216 | break; |
rs27 | 0:f0fbbfdca478 | 217 | |
rs27 | 0:f0fbbfdca478 | 218 | case '\n': // LF empfangen |
rs27 | 0:f0fbbfdca478 | 219 | cr_flag = true; |
rs27 | 0:f0fbbfdca478 | 220 | break; |
rs27 | 0:f0fbbfdca478 | 221 | |
rs27 | 0:f0fbbfdca478 | 222 | default: // Normales Zeichen |
rs27 | 0:f0fbbfdca478 | 223 | if (~iscntrl(ch)) |
rs27 | 0:f0fbbfdca478 | 224 | { |
rs27 | 0:f0fbbfdca478 | 225 | com_line[ComLinePtr] = ch; // Zeichen einfuegen |
rs27 | 0:f0fbbfdca478 | 226 | ComLinePtr++; |
rs27 | 0:f0fbbfdca478 | 227 | } |
rs27 | 0:f0fbbfdca478 | 228 | break; |
rs27 | 0:f0fbbfdca478 | 229 | |
rs27 | 0:f0fbbfdca478 | 230 | } // Ende SWITCH |
rs27 | 0:f0fbbfdca478 | 231 | |
rs27 | 0:f0fbbfdca478 | 232 | if (ComLinePtr >= 80) cr_flag = 1; // Zeilenüberlauf ? |
rs27 | 0:f0fbbfdca478 | 233 | |
rs27 | 0:f0fbbfdca478 | 234 | } |
rs27 | 0:f0fbbfdca478 | 235 | |
rs27 | 0:f0fbbfdca478 | 236 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 237 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 238 | |
rs27 | 1:19313470f629 | 239 | void date(void) |
rs27 | 0:f0fbbfdca478 | 240 | { |
rs27 | 0:f0fbbfdca478 | 241 | pc.printf("\nin date"); |
rs27 | 0:f0fbbfdca478 | 242 | } |
rs27 | 0:f0fbbfdca478 | 243 | |
rs27 | 0:f0fbbfdca478 | 244 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 245 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 246 | |
rs27 | 1:19313470f629 | 247 | void dump(void) |
rs27 | 0:f0fbbfdca478 | 248 | { |
rs27 | 0:f0fbbfdca478 | 249 | pc.printf("\nin dump"); |
rs27 | 0:f0fbbfdca478 | 250 | } |
rs27 | 0:f0fbbfdca478 | 251 | |
rs27 | 0:f0fbbfdca478 | 252 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 253 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 254 | |
rs27 | 1:19313470f629 | 255 | void help(void) |
rs27 | 0:f0fbbfdca478 | 256 | { |
rs27 | 0:f0fbbfdca478 | 257 | pc.printf("\n -- help ------------------------"); |
rs27 | 2:e330478fb0b6 | 258 | pc.printf("\n go [?,f,F,t,Tl] aktivieren der Heizung oder der Tropfen"); |
rs27 | 2:e330478fb0b6 | 259 | pc.printf("\n stop [?,f,F,t,Tl] deaktivieren der Heizung oder der Tropfen"); |
rs27 | 0:f0fbbfdca478 | 260 | pc.printf("\n set index [val] Sensor auswaehlen"); |
rs27 | 2:e330478fb0b6 | 261 | pc.printf("\n soll[val] Sollwertvorgabe fuer den Temperaturfuehler"); |
Sven3010 | 7:f5bfddb84d63 | 262 | pc.printf("\n korr[val] Korrekturwert fuer den Temperaturfuehler"); |
rs27 | 4:83dbae473d1f | 263 | pc.printf("\n cycle [val] Zeiteinheit fuer die Messung der Tropfen"); |
rs27 | 2:e330478fb0b6 | 264 | pc.printf("\n drops [val] Anzahl der Tropfen pro Zeiteinheit"); |
rs27 | 0:f0fbbfdca478 | 265 | pc.printf("\n"); |
rs27 | 1:19313470f629 | 266 | pc.printf("\n -- files ------------------------"); |
rs27 | 1:19313470f629 | 267 | pc.printf("\n dir >> Dateien anzeigen"); |
rs27 | 1:19313470f629 | 268 | pc.printf("\n list name >> den Inhalte einer Datei anzeigen"); |
rs27 | 1:19313470f629 | 269 | pc.printf("\n del name >> eine Datei loeschen"); |
rs27 | 1:19313470f629 | 270 | pc.printf("\n fill name [zeilen] >> eine Datei anlegen und fuellen"); |
rs27 | 1:19313470f629 | 271 | pc.printf("\n"); |
rs27 | 0:f0fbbfdca478 | 272 | } |
rs27 | 0:f0fbbfdca478 | 273 | |
rs27 | 0:f0fbbfdca478 | 274 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 275 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 276 | |
rs27 | 1:19313470f629 | 277 | void set(void) |
rs27 | 0:f0fbbfdca478 | 278 | { |
rs27 | 1:19313470f629 | 279 | |
rs27 | 1:19313470f629 | 280 | int n; |
rs27 | 1:19313470f629 | 281 | char name[20], wert[20]; |
rs27 | 0:f0fbbfdca478 | 282 | |
rs27 | 1:19313470f629 | 283 | n = sscanf(&com_line[ComLinePtr],"%s %s",name,wert); |
rs27 | 0:f0fbbfdca478 | 284 | |
rs27 | 0:f0fbbfdca478 | 285 | switch (n) |
rs27 | 0:f0fbbfdca478 | 286 | { |
rs27 | 1:19313470f629 | 287 | case -1: pc.printf("\n list config file"); |
rs27 | 1:19313470f629 | 288 | |
rs27 | 1:19313470f629 | 289 | cfg.read("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 290 | |
rs27 | 0:f0fbbfdca478 | 291 | pc.printf("\n Index >> Sonsor 0 bis 7"); |
rs27 | 0:f0fbbfdca478 | 292 | pc.printf("\n wert >> 0 = inaktiv, 1 = Rohwerte, 2 = errechneter Wert"); |
rs27 | 0:f0fbbfdca478 | 293 | break; |
rs27 | 0:f0fbbfdca478 | 294 | |
rs27 | 1:19313470f629 | 295 | case 1: pc.printf("\n list config value"); |
rs27 | 1:19313470f629 | 296 | |
rs27 | 1:19313470f629 | 297 | cfg.read("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 298 | |
rs27 | 1:19313470f629 | 299 | if (cfg.getValue(name, &value[0], sizeof(value))) |
rs27 | 1:19313470f629 | 300 | { |
rs27 | 1:19313470f629 | 301 | pc.printf("\n'%s'='%s'", name, value); |
rs27 | 1:19313470f629 | 302 | } |
rs27 | 0:f0fbbfdca478 | 303 | break; |
rs27 | 0:f0fbbfdca478 | 304 | |
rs27 | 1:19313470f629 | 305 | case 2: pc.printf("\n'%s' = '%s'",name,wert); |
rs27 | 1:19313470f629 | 306 | |
rs27 | 1:19313470f629 | 307 | cfg.setValue(name, wert); |
rs27 | 1:19313470f629 | 308 | cfg.write("/sd/input.cfg"); |
rs27 | 1:19313470f629 | 309 | |
rs27 | 0:f0fbbfdca478 | 310 | break; |
rs27 | 0:f0fbbfdca478 | 311 | } // end switch |
Sven3010 | 3:254f7ffb9b32 | 312 | pc.printf("\n"); |
rs27 | 0:f0fbbfdca478 | 313 | } |
rs27 | 0:f0fbbfdca478 | 314 | |
rs27 | 0:f0fbbfdca478 | 315 | //----------------------------------------------------------------------------- |
rs27 | 2:e330478fb0b6 | 316 | // monitor Aufruf soll |
rs27 | 2:e330478fb0b6 | 317 | // mit diesem Befehl wird der Sollwert für den Temperaturfühler vorgegeben |
rs27 | 2:e330478fb0b6 | 318 | |
rs27 | 2:e330478fb0b6 | 319 | void soll(void) |
rs27 | 2:e330478fb0b6 | 320 | { |
rs27 | 2:e330478fb0b6 | 321 | |
rs27 | 2:e330478fb0b6 | 322 | int n; |
rs27 | 2:e330478fb0b6 | 323 | char wert[20]; |
rs27 | 2:e330478fb0b6 | 324 | |
rs27 | 2:e330478fb0b6 | 325 | n = sscanf(&com_line[ComLinePtr],"%s",wert); |
rs27 | 2:e330478fb0b6 | 326 | |
rs27 | 2:e330478fb0b6 | 327 | switch (n) |
rs27 | 2:e330478fb0b6 | 328 | { |
rs27 | 2:e330478fb0b6 | 329 | case -1: pc.printf("\nSollwert = %f",soll_wert); |
rs27 | 2:e330478fb0b6 | 330 | break; |
rs27 | 2:e330478fb0b6 | 331 | |
rs27 | 2:e330478fb0b6 | 332 | case 1: |
rs27 | 2:e330478fb0b6 | 333 | |
rs27 | 2:e330478fb0b6 | 334 | cfg.setValue("soll", wert); |
rs27 | 2:e330478fb0b6 | 335 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 336 | |
rs27 | 2:e330478fb0b6 | 337 | soll_wert = atof(wert); |
rs27 | 2:e330478fb0b6 | 338 | |
rs27 | 2:e330478fb0b6 | 339 | pc.printf("\nneuer Sollwert = %f",soll_wert); |
rs27 | 2:e330478fb0b6 | 340 | |
rs27 | 2:e330478fb0b6 | 341 | break; |
rs27 | 2:e330478fb0b6 | 342 | |
rs27 | 2:e330478fb0b6 | 343 | } // end switch |
Sven3010 | 3:254f7ffb9b32 | 344 | pc.printf("\n"); |
rs27 | 2:e330478fb0b6 | 345 | } |
rs27 | 2:e330478fb0b6 | 346 | |
rs27 | 4:83dbae473d1f | 347 | //----------------------------------------------------------------------------- |
Sven3010 | 7:f5bfddb84d63 | 348 | // monitor Aufruf korr |
Sven3010 | 7:f5bfddb84d63 | 349 | // mit diesem Befehl wird der Sollwert für den Temperaturfühler vorgegeben |
Sven3010 | 7:f5bfddb84d63 | 350 | |
Sven3010 | 7:f5bfddb84d63 | 351 | void korr(void) |
Sven3010 | 7:f5bfddb84d63 | 352 | { |
Sven3010 | 7:f5bfddb84d63 | 353 | |
Sven3010 | 7:f5bfddb84d63 | 354 | int n; |
Sven3010 | 7:f5bfddb84d63 | 355 | char wert[20]; |
Sven3010 | 7:f5bfddb84d63 | 356 | |
Sven3010 | 7:f5bfddb84d63 | 357 | n = sscanf(&com_line[ComLinePtr],"%s",wert); |
Sven3010 | 7:f5bfddb84d63 | 358 | |
Sven3010 | 7:f5bfddb84d63 | 359 | switch (n) |
Sven3010 | 7:f5bfddb84d63 | 360 | { |
Sven3010 | 7:f5bfddb84d63 | 361 | case -1: pc.printf("\nKorrekturwert = %f",korr_wert); |
Sven3010 | 7:f5bfddb84d63 | 362 | break; |
Sven3010 | 7:f5bfddb84d63 | 363 | |
Sven3010 | 7:f5bfddb84d63 | 364 | case 1: |
Sven3010 | 7:f5bfddb84d63 | 365 | |
Sven3010 | 7:f5bfddb84d63 | 366 | cfg.setValue("korr", wert); |
Sven3010 | 7:f5bfddb84d63 | 367 | cfg.write("/sd/input.cfg"); |
Sven3010 | 7:f5bfddb84d63 | 368 | |
Sven3010 | 7:f5bfddb84d63 | 369 | korr_wert = atof(wert); |
Sven3010 | 7:f5bfddb84d63 | 370 | |
Sven3010 | 7:f5bfddb84d63 | 371 | pc.printf("\nneuer Korrekturwert = %f",korr_wert); |
Sven3010 | 7:f5bfddb84d63 | 372 | |
Sven3010 | 7:f5bfddb84d63 | 373 | break; |
Sven3010 | 7:f5bfddb84d63 | 374 | |
Sven3010 | 7:f5bfddb84d63 | 375 | } // end switch |
Sven3010 | 7:f5bfddb84d63 | 376 | pc.printf("\n"); |
Sven3010 | 7:f5bfddb84d63 | 377 | } |
Sven3010 | 7:f5bfddb84d63 | 378 | |
Sven3010 | 7:f5bfddb84d63 | 379 | //----------------------------------------------------------------------------- |
rs27 | 4:83dbae473d1f | 380 | // monitor Aufruf cycle |
rs27 | 4:83dbae473d1f | 381 | // mit diesem Befehl wird die Zeit in Sekunden vorgegeben, in der die Tropfenzahl |
rs27 | 4:83dbae473d1f | 382 | // ausgewertet wird |
rs27 | 4:83dbae473d1f | 383 | |
rs27 | 4:83dbae473d1f | 384 | void cycle(void) |
rs27 | 4:83dbae473d1f | 385 | { |
rs27 | 4:83dbae473d1f | 386 | int n; |
rs27 | 4:83dbae473d1f | 387 | char wert[20]; |
rs27 | 4:83dbae473d1f | 388 | |
rs27 | 4:83dbae473d1f | 389 | n = sscanf(&com_line[ComLinePtr],"%s",wert); |
rs27 | 4:83dbae473d1f | 390 | |
rs27 | 4:83dbae473d1f | 391 | switch (n) |
rs27 | 4:83dbae473d1f | 392 | { |
rs27 | 4:83dbae473d1f | 393 | case -1: pc.printf("\nZeit der Messung = %d Sekunden",tropfperiode); |
rs27 | 4:83dbae473d1f | 394 | break; |
rs27 | 4:83dbae473d1f | 395 | |
rs27 | 4:83dbae473d1f | 396 | case 1: |
rs27 | 4:83dbae473d1f | 397 | |
rs27 | 4:83dbae473d1f | 398 | cfg.setValue("cycle", wert); |
rs27 | 4:83dbae473d1f | 399 | cfg.write("/sd/input.cfg"); |
rs27 | 4:83dbae473d1f | 400 | |
rs27 | 4:83dbae473d1f | 401 | tropfperiode = atoi(wert); |
rs27 | 4:83dbae473d1f | 402 | |
rs27 | 4:83dbae473d1f | 403 | pc.printf("\nneue Zeit der Messung = %d Sekunden",tropfperiode); |
rs27 | 4:83dbae473d1f | 404 | |
rs27 | 4:83dbae473d1f | 405 | break; |
rs27 | 4:83dbae473d1f | 406 | |
rs27 | 4:83dbae473d1f | 407 | } // end switch |
rs27 | 4:83dbae473d1f | 408 | |
rs27 | 4:83dbae473d1f | 409 | pc.printf("\n"); |
rs27 | 4:83dbae473d1f | 410 | } |
rs27 | 4:83dbae473d1f | 411 | |
rs27 | 2:e330478fb0b6 | 412 | |
rs27 | 2:e330478fb0b6 | 413 | //----------------------------------------------------------------------------- |
rs27 | 2:e330478fb0b6 | 414 | // monitor Aufruf drops |
rs27 | 2:e330478fb0b6 | 415 | // mit diesem Befehl wird die Anzahl der Tropfen pro Zeiteinheit vorgegeben |
rs27 | 2:e330478fb0b6 | 416 | |
rs27 | 2:e330478fb0b6 | 417 | void func_drops(void) |
rs27 | 2:e330478fb0b6 | 418 | { |
rs27 | 2:e330478fb0b6 | 419 | |
rs27 | 2:e330478fb0b6 | 420 | int n; |
rs27 | 2:e330478fb0b6 | 421 | char wert[20]; |
rs27 | 2:e330478fb0b6 | 422 | |
rs27 | 2:e330478fb0b6 | 423 | n = sscanf(&com_line[ComLinePtr],"%s",wert); |
rs27 | 2:e330478fb0b6 | 424 | |
rs27 | 2:e330478fb0b6 | 425 | switch (n) |
rs27 | 2:e330478fb0b6 | 426 | { |
rs27 | 2:e330478fb0b6 | 427 | case -1: pc.printf("\nAnzahl Tropfen = %d",drops); |
rs27 | 2:e330478fb0b6 | 428 | break; |
rs27 | 2:e330478fb0b6 | 429 | |
rs27 | 2:e330478fb0b6 | 430 | case 1: |
rs27 | 2:e330478fb0b6 | 431 | cfg.setValue("drops", wert); |
rs27 | 2:e330478fb0b6 | 432 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 433 | |
rs27 | 2:e330478fb0b6 | 434 | drops = atoi(wert); |
rs27 | 2:e330478fb0b6 | 435 | |
rs27 | 2:e330478fb0b6 | 436 | pc.printf("\nneue Anzahl der Tropfen = %d",drops); |
rs27 | 2:e330478fb0b6 | 437 | |
rs27 | 2:e330478fb0b6 | 438 | break; |
rs27 | 2:e330478fb0b6 | 439 | |
rs27 | 2:e330478fb0b6 | 440 | } // end switch |
Sven3010 | 3:254f7ffb9b32 | 441 | pc.printf("\n"); |
rs27 | 2:e330478fb0b6 | 442 | } |
rs27 | 2:e330478fb0b6 | 443 | //----------------------------------------------------------------------------- |
rs27 | 2:e330478fb0b6 | 444 | // monitor Aufruf go |
rs27 | 2:e330478fb0b6 | 445 | // Wird die Heizung oder der Tropfenspender eingeschaltet. |
rs27 | 2:e330478fb0b6 | 446 | |
rs27 | 2:e330478fb0b6 | 447 | void go(void) |
rs27 | 2:e330478fb0b6 | 448 | { |
rs27 | 2:e330478fb0b6 | 449 | char ch; |
rs27 | 2:e330478fb0b6 | 450 | |
Sven3010 | 3:254f7ffb9b32 | 451 | sscanf(&com_line[ComLinePtr],"%c",&ch); |
rs27 | 2:e330478fb0b6 | 452 | |
Sven3010 | 3:254f7ffb9b32 | 453 | switch (ch) |
rs27 | 2:e330478fb0b6 | 454 | { |
rs27 | 2:e330478fb0b6 | 455 | |
rs27 | 6:e5f5e56ffc50 | 456 | case '1': magnet.set(0); break; |
rs27 | 6:e5f5e56ffc50 | 457 | case '2': magnet.set(1); break; |
rs27 | 6:e5f5e56ffc50 | 458 | case '3': magnet.set(2); break; |
rs27 | 6:e5f5e56ffc50 | 459 | case '4': magnet.set(3); break; |
rs27 | 6:e5f5e56ffc50 | 460 | case '5': magnet.set(4); break; |
rs27 | 6:e5f5e56ffc50 | 461 | case '6': magnet.set(5); break; |
rs27 | 6:e5f5e56ffc50 | 462 | case '7': magnet.set(6); break; |
rs27 | 6:e5f5e56ffc50 | 463 | case '8': magnet.set(7); break; |
rs27 | 6:e5f5e56ffc50 | 464 | case '9': magnet.set(8); break; |
rs27 | 6:e5f5e56ffc50 | 465 | |
rs27 | 2:e330478fb0b6 | 466 | case '?': |
rs27 | 2:e330478fb0b6 | 467 | if (t_flag) pc.printf("Temperatur aktiv"); |
rs27 | 2:e330478fb0b6 | 468 | else pc.printf("Temperatur inaktiv"); |
rs27 | 2:e330478fb0b6 | 469 | |
rs27 | 2:e330478fb0b6 | 470 | if (f_flag) pc.printf("Tropfen freigeschaltet"); |
rs27 | 2:e330478fb0b6 | 471 | else pc.printf("Tropfen gesperrt"); |
rs27 | 2:e330478fb0b6 | 472 | |
rs27 | 2:e330478fb0b6 | 473 | break; |
rs27 | 2:e330478fb0b6 | 474 | case 't': |
rs27 | 2:e330478fb0b6 | 475 | case 'T': |
rs27 | 2:e330478fb0b6 | 476 | cfg.setValue("t_flag", "1"); |
rs27 | 2:e330478fb0b6 | 477 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 478 | |
rs27 | 2:e330478fb0b6 | 479 | t_flag = true; |
rs27 | 2:e330478fb0b6 | 480 | pc.printf("\nTemperatursteuerung ist aktiv"); |
rs27 | 2:e330478fb0b6 | 481 | |
rs27 | 2:e330478fb0b6 | 482 | break; |
rs27 | 2:e330478fb0b6 | 483 | |
rs27 | 2:e330478fb0b6 | 484 | case 'f': |
rs27 | 2:e330478fb0b6 | 485 | case 'F': |
rs27 | 2:e330478fb0b6 | 486 | cfg.setValue("f_flag", "1"); |
rs27 | 2:e330478fb0b6 | 487 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 488 | |
rs27 | 2:e330478fb0b6 | 489 | f_flag = true; |
rs27 | 6:e5f5e56ffc50 | 490 | //com.putc('1'); |
rs27 | 6:e5f5e56ffc50 | 491 | magnet.set(0); |
rs27 | 2:e330478fb0b6 | 492 | pc.printf("\nTropfen freigeben"); |
rs27 | 2:e330478fb0b6 | 493 | |
rs27 | 2:e330478fb0b6 | 494 | break; |
rs27 | 2:e330478fb0b6 | 495 | |
rs27 | 4:83dbae473d1f | 496 | default: pc.printf("\nBefehl go kennt nur die Zeichen ?,t,T,f,F"); |
rs27 | 4:83dbae473d1f | 497 | break; |
rs27 | 2:e330478fb0b6 | 498 | |
rs27 | 2:e330478fb0b6 | 499 | } // end switch |
Sven3010 | 3:254f7ffb9b32 | 500 | pc.printf("\n"); |
rs27 | 2:e330478fb0b6 | 501 | } |
rs27 | 2:e330478fb0b6 | 502 | |
rs27 | 2:e330478fb0b6 | 503 | |
rs27 | 2:e330478fb0b6 | 504 | //----------------------------------------------------------------------------- |
rs27 | 2:e330478fb0b6 | 505 | // monitor Aufruf stop |
rs27 | 2:e330478fb0b6 | 506 | // Wird die Heizung oder der Tropfenspender ausgeschaltet. |
rs27 | 2:e330478fb0b6 | 507 | |
rs27 | 2:e330478fb0b6 | 508 | void stop(void) |
rs27 | 2:e330478fb0b6 | 509 | { |
rs27 | 2:e330478fb0b6 | 510 | char ch; |
rs27 | 2:e330478fb0b6 | 511 | |
Sven3010 | 3:254f7ffb9b32 | 512 | sscanf(&com_line[ComLinePtr],"%c",&ch); |
rs27 | 2:e330478fb0b6 | 513 | |
Sven3010 | 3:254f7ffb9b32 | 514 | switch (ch) |
rs27 | 2:e330478fb0b6 | 515 | { |
rs27 | 2:e330478fb0b6 | 516 | |
rs27 | 6:e5f5e56ffc50 | 517 | case '1': magnet.reset(0); break; |
rs27 | 6:e5f5e56ffc50 | 518 | case '2': magnet.reset(1); break; |
rs27 | 6:e5f5e56ffc50 | 519 | case '3': magnet.reset(2); break; |
rs27 | 6:e5f5e56ffc50 | 520 | case '4': magnet.reset(3); break; |
rs27 | 6:e5f5e56ffc50 | 521 | case '5': magnet.reset(4); break; |
rs27 | 6:e5f5e56ffc50 | 522 | case '6': magnet.reset(5); break; |
rs27 | 6:e5f5e56ffc50 | 523 | case '7': magnet.reset(6); break; |
rs27 | 6:e5f5e56ffc50 | 524 | case '8': magnet.reset(7); break; |
rs27 | 6:e5f5e56ffc50 | 525 | case '9': magnet.reset(8); break; |
rs27 | 6:e5f5e56ffc50 | 526 | |
rs27 | 2:e330478fb0b6 | 527 | case '?': |
rs27 | 2:e330478fb0b6 | 528 | if (t_flag) pc.printf("Temperatur aktiviert"); |
rs27 | 2:e330478fb0b6 | 529 | else pc.printf("Temperatur deaktiviert"); |
rs27 | 2:e330478fb0b6 | 530 | |
rs27 | 2:e330478fb0b6 | 531 | if (f_flag) pc.printf("Tropfen freigeschaltet"); |
rs27 | 2:e330478fb0b6 | 532 | else pc.printf("Tropfen gesperrt"); |
rs27 | 2:e330478fb0b6 | 533 | |
rs27 | 2:e330478fb0b6 | 534 | break; |
rs27 | 2:e330478fb0b6 | 535 | case 't': |
rs27 | 2:e330478fb0b6 | 536 | case 'T': |
rs27 | 2:e330478fb0b6 | 537 | cfg.setValue("t_flag", "0"); |
rs27 | 2:e330478fb0b6 | 538 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 539 | |
Sven3010 | 3:254f7ffb9b32 | 540 | t_flag = false; |
rs27 | 2:e330478fb0b6 | 541 | pc.printf("\nTemperatursteuerung ist deaktiviert"); |
rs27 | 2:e330478fb0b6 | 542 | |
rs27 | 2:e330478fb0b6 | 543 | break; |
rs27 | 2:e330478fb0b6 | 544 | |
rs27 | 2:e330478fb0b6 | 545 | case 'f': |
rs27 | 2:e330478fb0b6 | 546 | case 'F': |
rs27 | 2:e330478fb0b6 | 547 | cfg.setValue("f_flag", "0"); |
rs27 | 2:e330478fb0b6 | 548 | cfg.write("/sd/input.cfg"); |
rs27 | 2:e330478fb0b6 | 549 | |
Sven3010 | 3:254f7ffb9b32 | 550 | f_flag = false; |
rs27 | 2:e330478fb0b6 | 551 | com.putc('9'); |
rs27 | 2:e330478fb0b6 | 552 | pc.printf("\nTropfen gesperrt"); |
rs27 | 2:e330478fb0b6 | 553 | |
rs27 | 2:e330478fb0b6 | 554 | break; |
rs27 | 2:e330478fb0b6 | 555 | |
rs27 | 4:83dbae473d1f | 556 | default: |
rs27 | 4:83dbae473d1f | 557 | pc.printf("\nBefehl stop kennt nur die Zeichen ?,t,T,f,F '%c' %x", ch, ch); |
rs27 | 4:83dbae473d1f | 558 | break; |
rs27 | 2:e330478fb0b6 | 559 | |
rs27 | 2:e330478fb0b6 | 560 | } // end switch |
rs27 | 4:83dbae473d1f | 561 | |
rs27 | 4:83dbae473d1f | 562 | pc.printf("\n"); |
rs27 | 2:e330478fb0b6 | 563 | } |
rs27 | 2:e330478fb0b6 | 564 | //----------------------------------------------------------------------------- |
rs27 | 0:f0fbbfdca478 | 565 | // monitor Aufruf |
rs27 | 0:f0fbbfdca478 | 566 | |
rs27 | 1:19313470f629 | 567 | void time(void) |
rs27 | 0:f0fbbfdca478 | 568 | { |
rs27 | 0:f0fbbfdca478 | 569 | pc.printf("\nin timer"); |
rs27 | 0:f0fbbfdca478 | 570 | } |
rs27 | 0:f0fbbfdca478 | 571 | |
rs27 | 1:19313470f629 | 572 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 573 | // monitor Aufruf dir |
rs27 | 1:19313470f629 | 574 | // |
rs27 | 1:19313470f629 | 575 | // weiter Infos siehe auch |
rs27 | 1:19313470f629 | 576 | // http://elm-chan.org/fsw/ff/00index_e.html |
rs27 | 1:19313470f629 | 577 | // |
rs27 | 1:19313470f629 | 578 | void dir(void) |
rs27 | 1:19313470f629 | 579 | { |
rs27 | 1:19313470f629 | 580 | long size; |
rs27 | 1:19313470f629 | 581 | |
rs27 | 1:19313470f629 | 582 | DIR *d; |
rs27 | 1:19313470f629 | 583 | struct dirent *p; |
rs27 | 1:19313470f629 | 584 | |
rs27 | 1:19313470f629 | 585 | d = opendir("/sd"); |
rs27 | 1:19313470f629 | 586 | if (d != NULL) |
rs27 | 1:19313470f629 | 587 | { |
rs27 | 1:19313470f629 | 588 | while ((p = readdir(d)) != NULL) |
rs27 | 1:19313470f629 | 589 | { |
rs27 | 1:19313470f629 | 590 | sprintf(buffer,"/sd/%s",p->d_name); |
rs27 | 1:19313470f629 | 591 | pc.printf("\n %s", p->d_name); |
rs27 | 1:19313470f629 | 592 | FILE * f = fopen(buffer, "r"); |
rs27 | 1:19313470f629 | 593 | fseek(f, 0, SEEK_END); // seek to end of file |
rs27 | 1:19313470f629 | 594 | size = ftell(f); // get current file pointer |
rs27 | 1:19313470f629 | 595 | pc.printf(" %ld bytes ",size); |
rs27 | 1:19313470f629 | 596 | |
rs27 | 1:19313470f629 | 597 | time_t fattime = get_fattime(); |
rs27 | 1:19313470f629 | 598 | strftime(buffer, 40, "%a,%d %m %Y.%H:%M:%S", localtime(&fattime)); |
rs27 | 1:19313470f629 | 599 | pc.printf(" %s ", buffer); |
rs27 | 1:19313470f629 | 600 | |
rs27 | 1:19313470f629 | 601 | fclose(f); |
rs27 | 1:19313470f629 | 602 | } |
rs27 | 1:19313470f629 | 603 | |
rs27 | 1:19313470f629 | 604 | } |
rs27 | 1:19313470f629 | 605 | else |
rs27 | 1:19313470f629 | 606 | { |
rs27 | 1:19313470f629 | 607 | pc.printf("\nCould not open directory!\n"); |
rs27 | 1:19313470f629 | 608 | } |
rs27 | 1:19313470f629 | 609 | closedir(d); |
rs27 | 1:19313470f629 | 610 | |
rs27 | 1:19313470f629 | 611 | |
rs27 | 1:19313470f629 | 612 | FATFS* fs; |
rs27 | 1:19313470f629 | 613 | DWORD fre_clust; |
rs27 | 1:19313470f629 | 614 | f_getfree("0:",&fre_clust,&fs); |
rs27 | 1:19313470f629 | 615 | const float frs = float(fs->csize)*float(fs->free_clust) |
rs27 | 1:19313470f629 | 616 | #if _MAX_SS != 512 |
rs27 | 1:19313470f629 | 617 | *(fs->ssize); |
rs27 | 1:19313470f629 | 618 | #else |
rs27 | 1:19313470f629 | 619 | *512; |
rs27 | 1:19313470f629 | 620 | #endif |
rs27 | 1:19313470f629 | 621 | pc.printf("\n\nfree space = %f GB",frs/1073741824.0); |
rs27 | 1:19313470f629 | 622 | |
rs27 | 1:19313470f629 | 623 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 624 | } |
rs27 | 1:19313470f629 | 625 | |
rs27 | 1:19313470f629 | 626 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 627 | // monitor Aufruf list |
rs27 | 1:19313470f629 | 628 | |
rs27 | 1:19313470f629 | 629 | void list(void) |
rs27 | 1:19313470f629 | 630 | { |
rs27 | 1:19313470f629 | 631 | char dname[25]; |
rs27 | 1:19313470f629 | 632 | int ch; |
rs27 | 1:19313470f629 | 633 | |
rs27 | 1:19313470f629 | 634 | sscanf(&com_line[ComLinePtr],"%s",dname); |
rs27 | 1:19313470f629 | 635 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 636 | pc.printf("\nlist, file %s \n",buffer); |
rs27 | 1:19313470f629 | 637 | FILE * fp = fopen(buffer, "r"); |
rs27 | 1:19313470f629 | 638 | if(fp == NULL) |
rs27 | 1:19313470f629 | 639 | { |
rs27 | 1:19313470f629 | 640 | pc.printf("\nCould not open file for read\n\r"); |
rs27 | 1:19313470f629 | 641 | return; |
rs27 | 1:19313470f629 | 642 | } |
rs27 | 1:19313470f629 | 643 | |
rs27 | 1:19313470f629 | 644 | // mit fgets werden die Zeile einzeln gelesen, wenn die Länge < 64 Zeichen ist |
rs27 | 1:19313470f629 | 645 | |
rs27 | 1:19313470f629 | 646 | while (1) // list src to pc |
rs27 | 1:19313470f629 | 647 | { |
rs27 | 1:19313470f629 | 648 | ch = fgetc(fp); // until src EOF read. |
rs27 | 1:19313470f629 | 649 | if (ch == EOF) break; |
rs27 | 1:19313470f629 | 650 | pc.putc(ch); |
rs27 | 1:19313470f629 | 651 | } |
rs27 | 1:19313470f629 | 652 | |
rs27 | 1:19313470f629 | 653 | fclose(fp); |
rs27 | 1:19313470f629 | 654 | |
rs27 | 1:19313470f629 | 655 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 656 | } |
rs27 | 1:19313470f629 | 657 | |
rs27 | 1:19313470f629 | 658 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 659 | // monitor Aufruf del |
rs27 | 1:19313470f629 | 660 | |
rs27 | 1:19313470f629 | 661 | void del(void) |
rs27 | 1:19313470f629 | 662 | { |
rs27 | 1:19313470f629 | 663 | char dname[25]; |
rs27 | 1:19313470f629 | 664 | char buffer[40]; |
rs27 | 1:19313470f629 | 665 | |
rs27 | 1:19313470f629 | 666 | sscanf(&com_line[ComLinePtr],"%s",dname); |
rs27 | 1:19313470f629 | 667 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 668 | pc.printf("\ndelete file %s",buffer); |
rs27 | 1:19313470f629 | 669 | remove(buffer); |
rs27 | 1:19313470f629 | 670 | pc.printf("\ndone"); |
rs27 | 1:19313470f629 | 671 | } |
rs27 | 1:19313470f629 | 672 | |
rs27 | 1:19313470f629 | 673 | //----------------------------------------------------------------------------- |
rs27 | 1:19313470f629 | 674 | // monitor Aufruf fill |
rs27 | 1:19313470f629 | 675 | |
rs27 | 1:19313470f629 | 676 | void fill(void) |
rs27 | 1:19313470f629 | 677 | { |
rs27 | 1:19313470f629 | 678 | char dname[25]; |
rs27 | 1:19313470f629 | 679 | char buffer[40]; |
rs27 | 1:19313470f629 | 680 | int n = 20; |
rs27 | 1:19313470f629 | 681 | |
rs27 | 1:19313470f629 | 682 | sscanf(&com_line[ComLinePtr],"%s %d",dname,&n); |
rs27 | 1:19313470f629 | 683 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 1:19313470f629 | 684 | pc.printf("\nfill file %s \n",buffer); |
rs27 | 1:19313470f629 | 685 | FILE *fp = fopen(buffer, "w"); |
rs27 | 1:19313470f629 | 686 | if(fp == NULL) |
rs27 | 1:19313470f629 | 687 | { |
rs27 | 1:19313470f629 | 688 | pc.printf("Could not open file for write\n"); |
rs27 | 1:19313470f629 | 689 | } |
rs27 | 1:19313470f629 | 690 | for (int i = 0; i<n; i++) |
rs27 | 1:19313470f629 | 691 | { |
rs27 | 1:19313470f629 | 692 | fprintf(fp, "\nschreibe eine Zeile %d ",i); |
rs27 | 1:19313470f629 | 693 | } |
rs27 | 1:19313470f629 | 694 | fclose(fp); |
rs27 | 1:19313470f629 | 695 | pc.printf("\ndone\n"); |
rs27 | 1:19313470f629 | 696 | } |
rs27 | 1:19313470f629 | 697 | |
rs27 | 1:19313470f629 | 698 |