monitor
Fork of mon by
mon.cpp@0:401f3ae5ab50, 2015-01-03 (annotated)
- Committer:
- rs27
- Date:
- Sat Jan 03 15:24:48 2015 +0000
- Revision:
- 0:401f3ae5ab50
- Child:
- 1:bf1028d27a23
V09 Anzeige source code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rs27 | 0:401f3ae5ab50 | 1 | |
rs27 | 0:401f3ae5ab50 | 2 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 3 | // Modul...: MON.CPP |
rs27 | 0:401f3ae5ab50 | 4 | // Chip....: KL25Z |
rs27 | 0:401f3ae5ab50 | 5 | // |
rs27 | 0:401f3ae5ab50 | 6 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 7 | // Author..: Reinhold Schäfer |
rs27 | 0:401f3ae5ab50 | 8 | // Date....: 2014.06.08 |
rs27 | 0:401f3ae5ab50 | 9 | // http....: //www.microsps.net |
rs27 | 0:401f3ae5ab50 | 10 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 11 | #include <stdarg.h> |
rs27 | 0:401f3ae5ab50 | 12 | #include <ctype.h> |
rs27 | 0:401f3ae5ab50 | 13 | #include "mbed.h" |
rs27 | 0:401f3ae5ab50 | 14 | #include "mon.h" |
rs27 | 0:401f3ae5ab50 | 15 | #include "com.h" |
rs27 | 0:401f3ae5ab50 | 16 | #include "menu.h" |
rs27 | 0:401f3ae5ab50 | 17 | #include "MODSERIAL.h" |
rs27 | 0:401f3ae5ab50 | 18 | #include "SDFileSystem.h" |
rs27 | 0:401f3ae5ab50 | 19 | #include "FATDirHandle.h" |
rs27 | 0:401f3ae5ab50 | 20 | #include "FATFileSystem.h" |
rs27 | 0:401f3ae5ab50 | 21 | #include "myTextLCD.h" |
rs27 | 0:401f3ae5ab50 | 22 | #include "timer0.h" |
rs27 | 0:401f3ae5ab50 | 23 | |
rs27 | 0:401f3ae5ab50 | 24 | extern MODSERIAL pc; // definiert in main |
rs27 | 0:401f3ae5ab50 | 25 | extern SDFileSystem sd; |
rs27 | 0:401f3ae5ab50 | 26 | extern PwmOut lcd_kontrast; // definiert in main |
rs27 | 0:401f3ae5ab50 | 27 | extern timer0 down_timer; // Timer für Zeitsteuerung |
rs27 | 0:401f3ae5ab50 | 28 | extern menu menu_var; |
rs27 | 0:401f3ae5ab50 | 29 | extern TextLCD lcd; |
rs27 | 0:401f3ae5ab50 | 30 | |
rs27 | 0:401f3ae5ab50 | 31 | // Taster für die Eingabe |
rs27 | 0:401f3ae5ab50 | 32 | extern DigitalIn S1; |
rs27 | 0:401f3ae5ab50 | 33 | extern DigitalIn S2; |
rs27 | 0:401f3ae5ab50 | 34 | extern DigitalIn S3; |
rs27 | 0:401f3ae5ab50 | 35 | extern DigitalIn S4; |
rs27 | 0:401f3ae5ab50 | 36 | extern DigitalIn S5; |
rs27 | 0:401f3ae5ab50 | 37 | |
rs27 | 0:401f3ae5ab50 | 38 | Timer t; |
rs27 | 0:401f3ae5ab50 | 39 | |
rs27 | 0:401f3ae5ab50 | 40 | #define COMMAND_MAX 12 |
rs27 | 0:401f3ae5ab50 | 41 | #define COMMAND_LEN 7 |
rs27 | 0:401f3ae5ab50 | 42 | |
rs27 | 0:401f3ae5ab50 | 43 | const char command[COMMAND_MAX][COMMAND_LEN] = {"CLCD","DATE","DEL","DIR","DUMP","FILL","HELP","LIST","MENU","RN","SET","TIME"}; |
rs27 | 0:401f3ae5ab50 | 44 | |
rs27 | 0:401f3ae5ab50 | 45 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 46 | // constructor |
rs27 | 0:401f3ae5ab50 | 47 | |
rs27 | 0:401f3ae5ab50 | 48 | monitor::monitor(void) |
rs27 | 0:401f3ae5ab50 | 49 | { |
rs27 | 0:401f3ae5ab50 | 50 | uint8_t i; |
rs27 | 0:401f3ae5ab50 | 51 | |
rs27 | 0:401f3ae5ab50 | 52 | for (i = 0; i < MON_LINE_LEN; mon_line[i++] = 0); |
rs27 | 0:401f3ae5ab50 | 53 | MonLinePtr = 0; |
rs27 | 0:401f3ae5ab50 | 54 | |
rs27 | 0:401f3ae5ab50 | 55 | tasten = 0; |
rs27 | 0:401f3ae5ab50 | 56 | tasten_old = 0; |
rs27 | 0:401f3ae5ab50 | 57 | } |
rs27 | 0:401f3ae5ab50 | 58 | |
rs27 | 0:401f3ae5ab50 | 59 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 60 | // |
rs27 | 0:401f3ae5ab50 | 61 | // Function name : PARSER |
rs27 | 0:401f3ae5ab50 | 62 | // |
rs27 | 0:401f3ae5ab50 | 63 | // Returns : none |
rs27 | 0:401f3ae5ab50 | 64 | // |
rs27 | 0:401f3ae5ab50 | 65 | // Parameters : none |
rs27 | 0:401f3ae5ab50 | 66 | // |
rs27 | 0:401f3ae5ab50 | 67 | // Purpose : wertet die Eingangszeile aus und verzweigt zum gewünschten |
rs27 | 0:401f3ae5ab50 | 68 | // Programm |
rs27 | 0:401f3ae5ab50 | 69 | // |
rs27 | 0:401f3ae5ab50 | 70 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 71 | void monitor::parser (void) |
rs27 | 0:401f3ae5ab50 | 72 | { |
rs27 | 0:401f3ae5ab50 | 73 | uint8_t i, ch, tch, top, bottom, len; |
rs27 | 0:401f3ae5ab50 | 74 | int8_t res; |
rs27 | 0:401f3ae5ab50 | 75 | |
rs27 | 0:401f3ae5ab50 | 76 | // Zuerst wird der erste Buchstabe aus dem Eingabestring mit den ersten |
rs27 | 0:401f3ae5ab50 | 77 | // Buchstaben aus der Befehlstabelle verglichen |
rs27 | 0:401f3ae5ab50 | 78 | |
rs27 | 0:401f3ae5ab50 | 79 | bottom = 0; // untere Suchgrenze |
rs27 | 0:401f3ae5ab50 | 80 | top = COMMAND_MAX; // obere Suchgerenze |
rs27 | 0:401f3ae5ab50 | 81 | ch = mon_line[0]; // hole erstes Suchzeichen |
rs27 | 0:401f3ae5ab50 | 82 | |
rs27 | 0:401f3ae5ab50 | 83 | do |
rs27 | 0:401f3ae5ab50 | 84 | { |
rs27 | 0:401f3ae5ab50 | 85 | i = (top + bottom) >> 1; // suche in der Mitte des Feldes beginnen |
rs27 | 0:401f3ae5ab50 | 86 | tch = command [i][0]; // Vergleichszeichen laden |
rs27 | 0:401f3ae5ab50 | 87 | if (tch == ch) break; // Zeichen gefunden |
rs27 | 0:401f3ae5ab50 | 88 | if (tch > ch) top = i; // nach unten suchen |
rs27 | 0:401f3ae5ab50 | 89 | else bottom = i; // nach oben suchen |
rs27 | 0:401f3ae5ab50 | 90 | if (bottom != 0 && top == bottom + 1) break; // kein Buchstabe gef. |
rs27 | 0:401f3ae5ab50 | 91 | |
rs27 | 0:401f3ae5ab50 | 92 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:401f3ae5ab50 | 93 | |
rs27 | 0:401f3ae5ab50 | 94 | if (tch != ch) |
rs27 | 0:401f3ae5ab50 | 95 | { |
rs27 | 0:401f3ae5ab50 | 96 | pc.printf("\nParser Kommando nicht gefunden\n"); |
rs27 | 0:401f3ae5ab50 | 97 | return; // Kommando nicht gefunden wurde |
rs27 | 0:401f3ae5ab50 | 98 | } |
rs27 | 0:401f3ae5ab50 | 99 | |
rs27 | 0:401f3ae5ab50 | 100 | // das erst Wort soll von den Übergabeparametern isoliert werden |
rs27 | 0:401f3ae5ab50 | 101 | |
rs27 | 0:401f3ae5ab50 | 102 | for (i = 0; mon_line[i] != ' ' && mon_line[i] != 0; i++); |
rs27 | 0:401f3ae5ab50 | 103 | len = i; |
rs27 | 0:401f3ae5ab50 | 104 | |
rs27 | 0:401f3ae5ab50 | 105 | |
rs27 | 0:401f3ae5ab50 | 106 | if (i == 0) return; |
rs27 | 0:401f3ae5ab50 | 107 | |
rs27 | 0:401f3ae5ab50 | 108 | // die Übergabparameter ermitteln und in als Indexzeiger in |
rs27 | 0:401f3ae5ab50 | 109 | // 'ComLinePtr' abspeichern |
rs27 | 0:401f3ae5ab50 | 110 | |
rs27 | 0:401f3ae5ab50 | 111 | for ( ; mon_line[i] == ' ' && mon_line[i] != 0; i++); |
rs27 | 0:401f3ae5ab50 | 112 | MonLinePtr = i; |
rs27 | 0:401f3ae5ab50 | 113 | |
rs27 | 0:401f3ae5ab50 | 114 | // die binäre Suche nach den restlichen Zeichen wird hier fortgesetzt |
rs27 | 0:401f3ae5ab50 | 115 | |
rs27 | 0:401f3ae5ab50 | 116 | do |
rs27 | 0:401f3ae5ab50 | 117 | { |
rs27 | 0:401f3ae5ab50 | 118 | i = (top + bottom) >> 1; // berechnen des Suchplatzes |
rs27 | 0:401f3ae5ab50 | 119 | //printf_P (PSTR("\n\rVergleich 1 com_line = [%s] und Länge = [%d]"),com_line,len); |
rs27 | 0:401f3ae5ab50 | 120 | //strcpy_P (temp, &command[i][0]); |
rs27 | 0:401f3ae5ab50 | 121 | //printf_P (PSTR("\n\rVergleich 2 command[i] = [%s] und Index = [%d]"),temp,i); |
rs27 | 0:401f3ae5ab50 | 122 | res = strncmp(mon_line, &command[i][0], len); |
rs27 | 0:401f3ae5ab50 | 123 | //printf_P (PSTR("\n\rVergleich 3 res = [%d]"),res); |
rs27 | 0:401f3ae5ab50 | 124 | if (res == 0) break; // Zeichen gefunden |
rs27 | 0:401f3ae5ab50 | 125 | if (res > 0) |
rs27 | 0:401f3ae5ab50 | 126 | bottom = i; // nach unten suchen |
rs27 | 0:401f3ae5ab50 | 127 | else |
rs27 | 0:401f3ae5ab50 | 128 | top = i; // nach oben suchen |
rs27 | 0:401f3ae5ab50 | 129 | if (bottom != 0 && top == bottom + 1) break; |
rs27 | 0:401f3ae5ab50 | 130 | |
rs27 | 0:401f3ae5ab50 | 131 | } while (i > 0 && i < COMMAND_MAX - 1); |
rs27 | 0:401f3ae5ab50 | 132 | |
rs27 | 0:401f3ae5ab50 | 133 | |
rs27 | 0:401f3ae5ab50 | 134 | if (res) |
rs27 | 0:401f3ae5ab50 | 135 | { |
rs27 | 0:401f3ae5ab50 | 136 | pc.printf("\nParser Kommando nicht gefunden.\n"); |
rs27 | 0:401f3ae5ab50 | 137 | } |
rs27 | 0:401f3ae5ab50 | 138 | else |
rs27 | 0:401f3ae5ab50 | 139 | { |
rs27 | 0:401f3ae5ab50 | 140 | pc.printf("\nAufruf von Funktion %d",i); |
rs27 | 0:401f3ae5ab50 | 141 | |
rs27 | 0:401f3ae5ab50 | 142 | // "CLCD","DATE","DEL","DIR","DUMP","FILL","HELP","LIST","SET","TIME"}; |
rs27 | 0:401f3ae5ab50 | 143 | |
rs27 | 0:401f3ae5ab50 | 144 | switch(i) // Programmaufruf |
rs27 | 0:401f3ae5ab50 | 145 | { |
rs27 | 0:401f3ae5ab50 | 146 | case 0: clcd(); break; |
rs27 | 0:401f3ae5ab50 | 147 | case 1: date(); break; |
rs27 | 0:401f3ae5ab50 | 148 | case 2: del(); break; |
rs27 | 0:401f3ae5ab50 | 149 | case 3: dir(); break; |
rs27 | 0:401f3ae5ab50 | 150 | case 4: dump(); break; |
rs27 | 0:401f3ae5ab50 | 151 | case 5: fill(); break; |
rs27 | 0:401f3ae5ab50 | 152 | case 6: help(); break; |
rs27 | 0:401f3ae5ab50 | 153 | case 7: list(); break; |
rs27 | 0:401f3ae5ab50 | 154 | case 8: read_menu(); break; |
rs27 | 0:401f3ae5ab50 | 155 | case 9: rename(); break; |
rs27 | 0:401f3ae5ab50 | 156 | case 10: set(); break; |
rs27 | 0:401f3ae5ab50 | 157 | case 11: time(); break; |
rs27 | 0:401f3ae5ab50 | 158 | } |
rs27 | 0:401f3ae5ab50 | 159 | } |
rs27 | 0:401f3ae5ab50 | 160 | } |
rs27 | 0:401f3ae5ab50 | 161 | |
rs27 | 0:401f3ae5ab50 | 162 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 163 | // |
rs27 | 0:401f3ae5ab50 | 164 | // Function name : monitor |
rs27 | 0:401f3ae5ab50 | 165 | // |
rs27 | 0:401f3ae5ab50 | 166 | // Returns : none |
rs27 | 0:401f3ae5ab50 | 167 | // |
rs27 | 0:401f3ae5ab50 | 168 | // Parameters : none |
rs27 | 0:401f3ae5ab50 | 169 | // |
rs27 | 0:401f3ae5ab50 | 170 | // Purpose : Monitor für die Benutzereingabe |
rs27 | 0:401f3ae5ab50 | 171 | // |
rs27 | 0:401f3ae5ab50 | 172 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 173 | void monitor::monPC(void) |
rs27 | 0:401f3ae5ab50 | 174 | { |
rs27 | 0:401f3ae5ab50 | 175 | uint8_t i; |
rs27 | 0:401f3ae5ab50 | 176 | char ch; |
rs27 | 0:401f3ae5ab50 | 177 | |
rs27 | 0:401f3ae5ab50 | 178 | monLine(); |
rs27 | 0:401f3ae5ab50 | 179 | if (cr_flag) // Neue Eingabezeile |
rs27 | 0:401f3ae5ab50 | 180 | { |
rs27 | 0:401f3ae5ab50 | 181 | if (mon_line[0] != 0) |
rs27 | 0:401f3ae5ab50 | 182 | { |
rs27 | 0:401f3ae5ab50 | 183 | // Zeichenkette in Großbuchstaben umwandeln |
rs27 | 0:401f3ae5ab50 | 184 | for (i = 0; mon_line[i] != 0; i++) |
rs27 | 0:401f3ae5ab50 | 185 | { |
rs27 | 0:401f3ae5ab50 | 186 | ch = mon_line[i]; |
rs27 | 0:401f3ae5ab50 | 187 | ch = toupper(ch); // Nur Großbuchstaben |
rs27 | 0:401f3ae5ab50 | 188 | mon_line[i] = ch; |
rs27 | 0:401f3ae5ab50 | 189 | //pc.printf(("\n[%02x] %c"),ch,ch); |
rs27 | 0:401f3ae5ab50 | 190 | if (ch == ' ') i = MON_LINE_LEN; |
rs27 | 0:401f3ae5ab50 | 191 | } |
rs27 | 0:401f3ae5ab50 | 192 | |
rs27 | 0:401f3ae5ab50 | 193 | // pc.printf("\n monitor %s", mon_line); // zum Testen => später wird der parcer aufgerufen |
rs27 | 0:401f3ae5ab50 | 194 | parser(); // Parcer wird aufgerufen |
rs27 | 0:401f3ae5ab50 | 195 | } |
rs27 | 0:401f3ae5ab50 | 196 | |
rs27 | 0:401f3ae5ab50 | 197 | for (i=0; i < MON_LINE_LEN; mon_line[i++] = 0); |
rs27 | 0:401f3ae5ab50 | 198 | MonLinePtr = 0; |
rs27 | 0:401f3ae5ab50 | 199 | cr_flag = 0; |
rs27 | 0:401f3ae5ab50 | 200 | } |
rs27 | 0:401f3ae5ab50 | 201 | } |
rs27 | 0:401f3ae5ab50 | 202 | |
rs27 | 0:401f3ae5ab50 | 203 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 204 | // |
rs27 | 0:401f3ae5ab50 | 205 | // Function name : mon_line |
rs27 | 0:401f3ae5ab50 | 206 | // |
rs27 | 0:401f3ae5ab50 | 207 | // Returns : none |
rs27 | 0:401f3ae5ab50 | 208 | // |
rs27 | 0:401f3ae5ab50 | 209 | // Parameters : none |
rs27 | 0:401f3ae5ab50 | 210 | // |
rs27 | 0:401f3ae5ab50 | 211 | // Purpose : |
rs27 | 0:401f3ae5ab50 | 212 | // Wird periodisch in unregelmäsigen Abständen aufgerufen und ermittelt, |
rs27 | 0:401f3ae5ab50 | 213 | // ob weitere Zeichen von der Schnittstelle empfangen und die Eingabe |
rs27 | 0:401f3ae5ab50 | 214 | // mit Carrige Return abgeschlossen wurde. Sollte dies der Fall sein, |
rs27 | 0:401f3ae5ab50 | 215 | // wird das CR_FLAG gesetzt. Auch Editierfunktionen werden in diesem |
rs27 | 0:401f3ae5ab50 | 216 | // Rahmen behandelt. |
rs27 | 0:401f3ae5ab50 | 217 | // |
rs27 | 0:401f3ae5ab50 | 218 | //--------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 219 | |
rs27 | 0:401f3ae5ab50 | 220 | void monitor::monLine (void) |
rs27 | 0:401f3ae5ab50 | 221 | { |
rs27 | 0:401f3ae5ab50 | 222 | int ch; |
rs27 | 0:401f3ae5ab50 | 223 | |
rs27 | 0:401f3ae5ab50 | 224 | if (pc.readable() == false) return; // kein Zeichen vorhanden |
rs27 | 0:401f3ae5ab50 | 225 | |
rs27 | 0:401f3ae5ab50 | 226 | if (MonLinePtr >= 40) // Zeilenüberlauf ? |
rs27 | 0:401f3ae5ab50 | 227 | { |
rs27 | 0:401f3ae5ab50 | 228 | cr_flag = 1; |
rs27 | 0:401f3ae5ab50 | 229 | return; |
rs27 | 0:401f3ae5ab50 | 230 | } |
rs27 | 0:401f3ae5ab50 | 231 | |
rs27 | 0:401f3ae5ab50 | 232 | ch = pc.getc(); // Hole das Zeichen |
rs27 | 0:401f3ae5ab50 | 233 | //pc.printf("\nmon_line: %c [%02x]",ch,ch); // nur zum Test |
rs27 | 0:401f3ae5ab50 | 234 | |
rs27 | 0:401f3ae5ab50 | 235 | switch(ch) |
rs27 | 0:401f3ae5ab50 | 236 | { |
rs27 | 0:401f3ae5ab50 | 237 | //case ESC: esc_flag = 1; // Sonder Stringkommandos |
rs27 | 0:401f3ae5ab50 | 238 | // break; |
rs27 | 0:401f3ae5ab50 | 239 | |
rs27 | 0:401f3ae5ab50 | 240 | case '\r': // CARRIAGE RETURN |
rs27 | 0:401f3ae5ab50 | 241 | cr_flag = 1; |
rs27 | 0:401f3ae5ab50 | 242 | break; |
rs27 | 0:401f3ae5ab50 | 243 | |
rs27 | 0:401f3ae5ab50 | 244 | case '\n': // LF empfangen |
rs27 | 0:401f3ae5ab50 | 245 | cr_flag = 1; |
rs27 | 0:401f3ae5ab50 | 246 | break; |
rs27 | 0:401f3ae5ab50 | 247 | |
rs27 | 0:401f3ae5ab50 | 248 | default: // Normales Zeichen |
rs27 | 0:401f3ae5ab50 | 249 | if (~iscntrl(ch)) |
rs27 | 0:401f3ae5ab50 | 250 | { |
rs27 | 0:401f3ae5ab50 | 251 | mon_line[MonLinePtr] = ch; // Zeichen einfuegen |
rs27 | 0:401f3ae5ab50 | 252 | MonLinePtr++; |
rs27 | 0:401f3ae5ab50 | 253 | // pc.putc(ch); |
rs27 | 0:401f3ae5ab50 | 254 | } |
rs27 | 0:401f3ae5ab50 | 255 | break; |
rs27 | 0:401f3ae5ab50 | 256 | |
rs27 | 0:401f3ae5ab50 | 257 | } // Ende SWITCH |
rs27 | 0:401f3ae5ab50 | 258 | } |
rs27 | 0:401f3ae5ab50 | 259 | |
rs27 | 0:401f3ae5ab50 | 260 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 261 | // monitor Aufruf damp |
rs27 | 0:401f3ae5ab50 | 262 | |
rs27 | 0:401f3ae5ab50 | 263 | void monitor::dump(void) |
rs27 | 0:401f3ae5ab50 | 264 | { |
rs27 | 0:401f3ae5ab50 | 265 | pc.printf("\nin dump"); |
rs27 | 0:401f3ae5ab50 | 266 | } |
rs27 | 0:401f3ae5ab50 | 267 | |
rs27 | 0:401f3ae5ab50 | 268 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 269 | // monitor Aufruf clcd contrast lcd |
rs27 | 0:401f3ae5ab50 | 270 | |
rs27 | 0:401f3ae5ab50 | 271 | void monitor::clcd (void) |
rs27 | 0:401f3ae5ab50 | 272 | { |
rs27 | 0:401f3ae5ab50 | 273 | int n, val; |
rs27 | 0:401f3ae5ab50 | 274 | |
rs27 | 0:401f3ae5ab50 | 275 | n = sscanf(&mon_line[MonLinePtr],"%d",&val); |
rs27 | 0:401f3ae5ab50 | 276 | |
rs27 | 0:401f3ae5ab50 | 277 | switch (n) |
rs27 | 0:401f3ae5ab50 | 278 | { |
rs27 | 0:401f3ae5ab50 | 279 | case -1: |
rs27 | 0:401f3ae5ab50 | 280 | |
rs27 | 0:401f3ae5ab50 | 281 | pc.printf("\n bitte Wert angeben"); |
rs27 | 0:401f3ae5ab50 | 282 | pc.printf("\n Wert >> 0 bis 100"); |
rs27 | 0:401f3ae5ab50 | 283 | pc.printf("\n default Wert = 30"); |
rs27 | 0:401f3ae5ab50 | 284 | break; |
rs27 | 0:401f3ae5ab50 | 285 | |
rs27 | 0:401f3ae5ab50 | 286 | case 1: //status[pos] = val; |
rs27 | 0:401f3ae5ab50 | 287 | if (val < 0) val = 0; |
rs27 | 0:401f3ae5ab50 | 288 | if (val > 100) val = 100; |
rs27 | 0:401f3ae5ab50 | 289 | lcd_kontrast.pulsewidth_us(val); // Kontrastwert setzen |
rs27 | 0:401f3ae5ab50 | 290 | pc.printf("\n LCD Kontrast = %d",val); |
rs27 | 0:401f3ae5ab50 | 291 | break; |
rs27 | 0:401f3ae5ab50 | 292 | } // end switch |
rs27 | 0:401f3ae5ab50 | 293 | |
rs27 | 0:401f3ae5ab50 | 294 | } |
rs27 | 0:401f3ae5ab50 | 295 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 296 | // monitor Aufruf help |
rs27 | 0:401f3ae5ab50 | 297 | |
rs27 | 0:401f3ae5ab50 | 298 | void monitor::help(void) |
rs27 | 0:401f3ae5ab50 | 299 | { |
rs27 | 0:401f3ae5ab50 | 300 | pc.printf("\n -- help ------------------------"); |
rs27 | 0:401f3ae5ab50 | 301 | pc.printf("\n clcd val >> lcd Kontrast"); |
rs27 | 0:401f3ae5ab50 | 302 | pc.printf("\n set index [val] >> Sensor auswaehlen"); |
rs27 | 0:401f3ae5ab50 | 303 | pc.printf("\n time [std min sek tag monat jahr]"); |
rs27 | 0:401f3ae5ab50 | 304 | pc.printf("\n"); |
rs27 | 0:401f3ae5ab50 | 305 | pc.printf("\n -- files ------------------------"); |
rs27 | 0:401f3ae5ab50 | 306 | pc.printf("\n dir >> Dateien anzeigen"); |
rs27 | 0:401f3ae5ab50 | 307 | pc.printf("\n list name >> den Inhalte einer Datei anzeigen"); |
rs27 | 0:401f3ae5ab50 | 308 | pc.printf("\n del name >> eine Datei loeschen"); |
rs27 | 0:401f3ae5ab50 | 309 | pc.printf("\n fill name [zeilen] >> eine Datei anlegen und fuellen"); |
rs27 | 0:401f3ae5ab50 | 310 | pc.printf("\n rn name name >> eine Datei umbenennen"); |
rs27 | 0:401f3ae5ab50 | 311 | pc.printf("\n menu testen der menu Funktion"); |
rs27 | 0:401f3ae5ab50 | 312 | pc.printf("\n"); |
rs27 | 0:401f3ae5ab50 | 313 | } |
rs27 | 0:401f3ae5ab50 | 314 | |
rs27 | 0:401f3ae5ab50 | 315 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 316 | // monitor Aufruf set |
rs27 | 0:401f3ae5ab50 | 317 | |
rs27 | 0:401f3ae5ab50 | 318 | void monitor::set(void) |
rs27 | 0:401f3ae5ab50 | 319 | { |
rs27 | 0:401f3ae5ab50 | 320 | int n, pos, val; |
rs27 | 0:401f3ae5ab50 | 321 | |
rs27 | 0:401f3ae5ab50 | 322 | n = sscanf(&mon_line[MonLinePtr],"%d %d",&pos,&val); |
rs27 | 0:401f3ae5ab50 | 323 | |
rs27 | 0:401f3ae5ab50 | 324 | switch (n) |
rs27 | 0:401f3ae5ab50 | 325 | { |
rs27 | 0:401f3ae5ab50 | 326 | case -1: pc.printf("\nbitte index [wert] angeben"); |
rs27 | 0:401f3ae5ab50 | 327 | pc.printf("\n Index >> Sonsor 0 bis 7"); |
rs27 | 0:401f3ae5ab50 | 328 | pc.printf("\n wert >> 0 = inaktiv, 1 = Rohwerte, 2 = errechneter Wert"); |
rs27 | 0:401f3ae5ab50 | 329 | break; |
rs27 | 0:401f3ae5ab50 | 330 | |
rs27 | 0:401f3ae5ab50 | 331 | case 1: pc.printf("\nread status[%d] ",pos); |
rs27 | 0:401f3ae5ab50 | 332 | break; |
rs27 | 0:401f3ae5ab50 | 333 | |
rs27 | 0:401f3ae5ab50 | 334 | case 2: //status[pos] = val; |
rs27 | 0:401f3ae5ab50 | 335 | pc.printf("\nset status[%d] = %d",pos); |
rs27 | 0:401f3ae5ab50 | 336 | break; |
rs27 | 0:401f3ae5ab50 | 337 | } // end switch |
rs27 | 0:401f3ae5ab50 | 338 | } |
rs27 | 0:401f3ae5ab50 | 339 | |
rs27 | 0:401f3ae5ab50 | 340 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 341 | // monitor Aufruf date |
rs27 | 0:401f3ae5ab50 | 342 | |
rs27 | 0:401f3ae5ab50 | 343 | void monitor::date(void) |
rs27 | 0:401f3ae5ab50 | 344 | { |
rs27 | 0:401f3ae5ab50 | 345 | pc.printf("\nin date"); |
rs27 | 0:401f3ae5ab50 | 346 | } |
rs27 | 0:401f3ae5ab50 | 347 | |
rs27 | 0:401f3ae5ab50 | 348 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 349 | // monitor Aufruf time |
rs27 | 0:401f3ae5ab50 | 350 | |
rs27 | 0:401f3ae5ab50 | 351 | void monitor::time(void) |
rs27 | 0:401f3ae5ab50 | 352 | { |
rs27 | 0:401f3ae5ab50 | 353 | int sek, min, std, day, month, year, n; |
rs27 | 0:401f3ae5ab50 | 354 | |
rs27 | 0:401f3ae5ab50 | 355 | sek = 0; |
rs27 | 0:401f3ae5ab50 | 356 | min = 0; |
rs27 | 0:401f3ae5ab50 | 357 | std = 0; |
rs27 | 0:401f3ae5ab50 | 358 | day = 0; |
rs27 | 0:401f3ae5ab50 | 359 | month = 0; |
rs27 | 0:401f3ae5ab50 | 360 | year = 0; |
rs27 | 0:401f3ae5ab50 | 361 | |
rs27 | 0:401f3ae5ab50 | 362 | n = sscanf(&mon_line[MonLinePtr],"%d %d %d %d %d %d",&std, &min, &sek, &day, &month, &year); |
rs27 | 0:401f3ae5ab50 | 363 | |
rs27 | 0:401f3ae5ab50 | 364 | switch (n) |
rs27 | 0:401f3ae5ab50 | 365 | { |
rs27 | 0:401f3ae5ab50 | 366 | case -1 : // keine Zeichenübergabe |
rs27 | 0:401f3ae5ab50 | 367 | case 0 : // keine Zeichenübergabe |
rs27 | 0:401f3ae5ab50 | 368 | |
rs27 | 0:401f3ae5ab50 | 369 | strftime(buffer, 40, "%a, %d.%m.%Y %H:%M:%S", localtime(&down_timer.seconds)); |
rs27 | 0:401f3ae5ab50 | 370 | pc.printf("\nTime = %s\n", buffer); |
rs27 | 0:401f3ae5ab50 | 371 | break; |
rs27 | 0:401f3ae5ab50 | 372 | |
rs27 | 0:401f3ae5ab50 | 373 | case 1 : // std |
rs27 | 0:401f3ae5ab50 | 374 | case 2 : // min |
rs27 | 0:401f3ae5ab50 | 375 | case 3 : // sek |
rs27 | 0:401f3ae5ab50 | 376 | case 4 : // tag |
rs27 | 0:401f3ae5ab50 | 377 | case 5 : // mon |
rs27 | 0:401f3ae5ab50 | 378 | case 6 : // jahr |
rs27 | 0:401f3ae5ab50 | 379 | |
rs27 | 0:401f3ae5ab50 | 380 | if (sek > 59) sek = 59; |
rs27 | 0:401f3ae5ab50 | 381 | if (sek < 0) sek = 0; |
rs27 | 0:401f3ae5ab50 | 382 | buffer[0] = (uint8_t)sek;; |
rs27 | 0:401f3ae5ab50 | 383 | |
rs27 | 0:401f3ae5ab50 | 384 | if (min > 59) min = 59; |
rs27 | 0:401f3ae5ab50 | 385 | if (min < 0) min = 0; |
rs27 | 0:401f3ae5ab50 | 386 | buffer[1] = (uint8_t)min; |
rs27 | 0:401f3ae5ab50 | 387 | |
rs27 | 0:401f3ae5ab50 | 388 | if (std > 23) std = 23; |
rs27 | 0:401f3ae5ab50 | 389 | if (std < 0) std = 0; |
rs27 | 0:401f3ae5ab50 | 390 | buffer[2] = (uint8_t)std; |
rs27 | 0:401f3ae5ab50 | 391 | |
rs27 | 0:401f3ae5ab50 | 392 | if (day > 31) day = 31; |
rs27 | 0:401f3ae5ab50 | 393 | if (day < 0) day = 0; |
rs27 | 0:401f3ae5ab50 | 394 | buffer[3] = (uint8_t)day;; |
rs27 | 0:401f3ae5ab50 | 395 | |
rs27 | 0:401f3ae5ab50 | 396 | if (month > 12) month = 12; |
rs27 | 0:401f3ae5ab50 | 397 | if (month < 0) month = 0; |
rs27 | 0:401f3ae5ab50 | 398 | buffer[4] = (uint8_t)month; |
rs27 | 0:401f3ae5ab50 | 399 | |
rs27 | 0:401f3ae5ab50 | 400 | if (year > 2100) year = 2100; |
rs27 | 0:401f3ae5ab50 | 401 | if (year < 2000) year = 2000; |
rs27 | 0:401f3ae5ab50 | 402 | buffer[5] = (uint8_t)(year - 1900); |
rs27 | 0:401f3ae5ab50 | 403 | |
rs27 | 0:401f3ae5ab50 | 404 | down_timer.Set_t((uint8_t *)buffer); |
rs27 | 0:401f3ae5ab50 | 405 | |
rs27 | 0:401f3ae5ab50 | 406 | strftime(buffer, 40, "%a, %d.%m.%Y %H:%M:%S", localtime(&down_timer.seconds)); |
rs27 | 0:401f3ae5ab50 | 407 | pc.printf("\nnew Time = %s\n", buffer); |
rs27 | 0:401f3ae5ab50 | 408 | break; |
rs27 | 0:401f3ae5ab50 | 409 | } |
rs27 | 0:401f3ae5ab50 | 410 | } |
rs27 | 0:401f3ae5ab50 | 411 | |
rs27 | 0:401f3ae5ab50 | 412 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 413 | // monitor Aufruf dir |
rs27 | 0:401f3ae5ab50 | 414 | // |
rs27 | 0:401f3ae5ab50 | 415 | // weiter Infos siehe auch |
rs27 | 0:401f3ae5ab50 | 416 | // http://elm-chan.org/fsw/ff/00index_e.html |
rs27 | 0:401f3ae5ab50 | 417 | // |
rs27 | 0:401f3ae5ab50 | 418 | void monitor::dir(void) |
rs27 | 0:401f3ae5ab50 | 419 | { |
rs27 | 0:401f3ae5ab50 | 420 | |
rs27 | 0:401f3ae5ab50 | 421 | long size; |
rs27 | 0:401f3ae5ab50 | 422 | float f_size; |
rs27 | 0:401f3ae5ab50 | 423 | int i, len; |
rs27 | 0:401f3ae5ab50 | 424 | |
rs27 | 0:401f3ae5ab50 | 425 | DIR *d; |
rs27 | 0:401f3ae5ab50 | 426 | struct dirent *p; |
rs27 | 0:401f3ae5ab50 | 427 | |
rs27 | 0:401f3ae5ab50 | 428 | d = opendir("/sd"); |
rs27 | 0:401f3ae5ab50 | 429 | if (d != NULL) |
rs27 | 0:401f3ae5ab50 | 430 | { |
rs27 | 0:401f3ae5ab50 | 431 | while ((p = readdir(d)) != NULL) |
rs27 | 0:401f3ae5ab50 | 432 | { |
rs27 | 0:401f3ae5ab50 | 433 | sprintf(buffer,"/sd/%s",p->d_name); |
rs27 | 0:401f3ae5ab50 | 434 | pc.printf("\n %s", p->d_name); |
rs27 | 0:401f3ae5ab50 | 435 | FILE * f = fopen(buffer, "r"); |
rs27 | 0:401f3ae5ab50 | 436 | fseek(f, 0, SEEK_END); // seek to end of file |
rs27 | 0:401f3ae5ab50 | 437 | size = ftell(f); // get current file pointer |
rs27 | 0:401f3ae5ab50 | 438 | |
rs27 | 0:401f3ae5ab50 | 439 | len = strlen(p->d_name); |
rs27 | 0:401f3ae5ab50 | 440 | for (i = len; i < 16; i++) pc.printf("%c",' '); |
rs27 | 0:401f3ae5ab50 | 441 | |
rs27 | 0:401f3ae5ab50 | 442 | if (size < 1024) |
rs27 | 0:401f3ae5ab50 | 443 | { |
rs27 | 0:401f3ae5ab50 | 444 | sprintf(buffer," %ld bytes ",size); |
rs27 | 0:401f3ae5ab50 | 445 | } |
rs27 | 0:401f3ae5ab50 | 446 | else |
rs27 | 0:401f3ae5ab50 | 447 | { |
rs27 | 0:401f3ae5ab50 | 448 | if (size > 1048576) |
rs27 | 0:401f3ae5ab50 | 449 | { |
rs27 | 0:401f3ae5ab50 | 450 | f_size = size / 1048576.0; |
rs27 | 0:401f3ae5ab50 | 451 | sprintf(buffer," %0.3f MB ",f_size); |
rs27 | 0:401f3ae5ab50 | 452 | |
rs27 | 0:401f3ae5ab50 | 453 | } |
rs27 | 0:401f3ae5ab50 | 454 | else |
rs27 | 0:401f3ae5ab50 | 455 | { |
rs27 | 0:401f3ae5ab50 | 456 | f_size = size / 1024.0; |
rs27 | 0:401f3ae5ab50 | 457 | sprintf(buffer," %0.3f kB ",f_size); |
rs27 | 0:401f3ae5ab50 | 458 | } |
rs27 | 0:401f3ae5ab50 | 459 | } |
rs27 | 0:401f3ae5ab50 | 460 | |
rs27 | 0:401f3ae5ab50 | 461 | pc.printf("%s",buffer); |
rs27 | 0:401f3ae5ab50 | 462 | |
rs27 | 0:401f3ae5ab50 | 463 | len = strlen(buffer); |
rs27 | 0:401f3ae5ab50 | 464 | for (i = len; i < 16; i++) pc.printf("%c",' '); |
rs27 | 0:401f3ae5ab50 | 465 | |
rs27 | 0:401f3ae5ab50 | 466 | // fno.fdate = (WORD)(((year - 1980) * 512U) | month * 32U | mday); |
rs27 | 0:401f3ae5ab50 | 467 | // fno.ftime = (WORD)(hour * 2048U | min * 32U | sec / 2U); |
rs27 | 0:401f3ae5ab50 | 468 | |
rs27 | 0:401f3ae5ab50 | 469 | unsigned long fdate = p->fdate; |
rs27 | 0:401f3ae5ab50 | 470 | unsigned long ftime = p->ftime; |
rs27 | 0:401f3ae5ab50 | 471 | |
rs27 | 0:401f3ae5ab50 | 472 | pc.printf("%02d:",(ftime>>11)); // Stunden |
rs27 | 0:401f3ae5ab50 | 473 | pc.printf("%02d:",((ftime & 0x000007E0)>>5)); // Minuten |
rs27 | 0:401f3ae5ab50 | 474 | pc.printf("%02d ",((ftime & 0x0000001F)*2)); // Sekunden |
rs27 | 0:401f3ae5ab50 | 475 | |
rs27 | 0:401f3ae5ab50 | 476 | pc.printf("%02d.",(fdate & 0x0000001F)); // Tag |
rs27 | 0:401f3ae5ab50 | 477 | pc.printf("%02d.",((fdate & 0x000001E0)>>5)); // Monat |
rs27 | 0:401f3ae5ab50 | 478 | pc.printf("%04d ",((fdate>>9)+1980)); // Monat |
rs27 | 0:401f3ae5ab50 | 479 | |
rs27 | 0:401f3ae5ab50 | 480 | |
rs27 | 0:401f3ae5ab50 | 481 | // time_t fattime = get_fattime(); |
rs27 | 0:401f3ae5ab50 | 482 | // strftime(buffer, 40, "%a,%d %m %Y.%H:%M:%S", localtime(&fattime)); |
rs27 | 0:401f3ae5ab50 | 483 | // pc.printf(" %s ", buffer); |
rs27 | 0:401f3ae5ab50 | 484 | |
rs27 | 0:401f3ae5ab50 | 485 | fclose(f); |
rs27 | 0:401f3ae5ab50 | 486 | } |
rs27 | 0:401f3ae5ab50 | 487 | |
rs27 | 0:401f3ae5ab50 | 488 | } |
rs27 | 0:401f3ae5ab50 | 489 | else |
rs27 | 0:401f3ae5ab50 | 490 | { |
rs27 | 0:401f3ae5ab50 | 491 | pc.printf("\nCould not open directory!\n"); |
rs27 | 0:401f3ae5ab50 | 492 | } |
rs27 | 0:401f3ae5ab50 | 493 | closedir(d); |
rs27 | 0:401f3ae5ab50 | 494 | |
rs27 | 0:401f3ae5ab50 | 495 | |
rs27 | 0:401f3ae5ab50 | 496 | FATFS* fs; |
rs27 | 0:401f3ae5ab50 | 497 | DWORD fre_clust; |
rs27 | 0:401f3ae5ab50 | 498 | f_getfree("0:",&fre_clust,&fs); |
rs27 | 0:401f3ae5ab50 | 499 | const float frs = float(fs->csize)*float(fs->free_clust) |
rs27 | 0:401f3ae5ab50 | 500 | #if _MAX_SS != 512 |
rs27 | 0:401f3ae5ab50 | 501 | *(fs->ssize); |
rs27 | 0:401f3ae5ab50 | 502 | #else |
rs27 | 0:401f3ae5ab50 | 503 | *512; |
rs27 | 0:401f3ae5ab50 | 504 | #endif |
rs27 | 0:401f3ae5ab50 | 505 | pc.printf("\n\nfree space = %0.3f GB",frs/1073741824.0); |
rs27 | 0:401f3ae5ab50 | 506 | |
rs27 | 0:401f3ae5ab50 | 507 | pc.printf("\ndone\n"); |
rs27 | 0:401f3ae5ab50 | 508 | } |
rs27 | 0:401f3ae5ab50 | 509 | |
rs27 | 0:401f3ae5ab50 | 510 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 511 | // monitor Aufruf list |
rs27 | 0:401f3ae5ab50 | 512 | |
rs27 | 0:401f3ae5ab50 | 513 | void monitor::list(void) |
rs27 | 0:401f3ae5ab50 | 514 | { |
rs27 | 0:401f3ae5ab50 | 515 | char dname[25]; |
rs27 | 0:401f3ae5ab50 | 516 | |
rs27 | 0:401f3ae5ab50 | 517 | sscanf(&mon_line[MonLinePtr],"%s",dname); |
rs27 | 0:401f3ae5ab50 | 518 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 0:401f3ae5ab50 | 519 | pc.printf("\nlist, file %s \n",buffer); |
rs27 | 0:401f3ae5ab50 | 520 | FILE * fp = fopen(buffer, "r"); |
rs27 | 0:401f3ae5ab50 | 521 | if(fp == NULL) |
rs27 | 0:401f3ae5ab50 | 522 | { |
rs27 | 0:401f3ae5ab50 | 523 | pc.printf("\nCould not open file for read\n\r"); |
rs27 | 0:401f3ae5ab50 | 524 | return; |
rs27 | 0:401f3ae5ab50 | 525 | } |
rs27 | 0:401f3ae5ab50 | 526 | |
rs27 | 0:401f3ae5ab50 | 527 | // mit fgets werden die Zeile einzeln gelesen, wenn die Länge < 64 Zeichen ist |
rs27 | 0:401f3ae5ab50 | 528 | |
rs27 | 0:401f3ae5ab50 | 529 | while (fgets(buffer, 64, fp)) |
rs27 | 0:401f3ae5ab50 | 530 | { |
rs27 | 0:401f3ae5ab50 | 531 | pc.printf("> %s", buffer); |
rs27 | 0:401f3ae5ab50 | 532 | } |
rs27 | 0:401f3ae5ab50 | 533 | |
rs27 | 0:401f3ae5ab50 | 534 | fclose(fp); |
rs27 | 0:401f3ae5ab50 | 535 | pc.printf("\ndone\n"); |
rs27 | 0:401f3ae5ab50 | 536 | } |
rs27 | 0:401f3ae5ab50 | 537 | |
rs27 | 0:401f3ae5ab50 | 538 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 539 | // monitor Aufruf del |
rs27 | 0:401f3ae5ab50 | 540 | |
rs27 | 0:401f3ae5ab50 | 541 | void monitor::del(void) |
rs27 | 0:401f3ae5ab50 | 542 | { |
rs27 | 0:401f3ae5ab50 | 543 | char dname[25]; |
rs27 | 0:401f3ae5ab50 | 544 | |
rs27 | 0:401f3ae5ab50 | 545 | sscanf(&mon_line[MonLinePtr],"%s",dname); |
rs27 | 0:401f3ae5ab50 | 546 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 0:401f3ae5ab50 | 547 | pc.printf("\ndelete file %s",buffer); |
rs27 | 0:401f3ae5ab50 | 548 | remove(buffer); |
rs27 | 0:401f3ae5ab50 | 549 | //int res = sd.re_name("/sd/test1","/sd/test1.txt"); |
rs27 | 0:401f3ae5ab50 | 550 | pc.printf("\ndone"); |
rs27 | 0:401f3ae5ab50 | 551 | } |
rs27 | 0:401f3ae5ab50 | 552 | |
rs27 | 0:401f3ae5ab50 | 553 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 554 | // monitor Aufruf fill |
rs27 | 0:401f3ae5ab50 | 555 | |
rs27 | 0:401f3ae5ab50 | 556 | void monitor::fill(void) |
rs27 | 0:401f3ae5ab50 | 557 | { |
rs27 | 0:401f3ae5ab50 | 558 | char dname[25]; |
rs27 | 0:401f3ae5ab50 | 559 | int n = 20; |
rs27 | 0:401f3ae5ab50 | 560 | |
rs27 | 0:401f3ae5ab50 | 561 | sscanf(&mon_line[MonLinePtr],"%s %d",dname,&n); |
rs27 | 0:401f3ae5ab50 | 562 | sprintf(buffer,"/sd/%s",dname); |
rs27 | 0:401f3ae5ab50 | 563 | pc.printf("\nfill file %s \n",buffer); |
rs27 | 0:401f3ae5ab50 | 564 | FILE *fp = fopen(buffer, "w"); |
rs27 | 0:401f3ae5ab50 | 565 | if(fp == NULL) |
rs27 | 0:401f3ae5ab50 | 566 | { |
rs27 | 0:401f3ae5ab50 | 567 | pc.printf("Could not open file for write\n"); |
rs27 | 0:401f3ae5ab50 | 568 | } |
rs27 | 0:401f3ae5ab50 | 569 | for (int i = 0; i<n; i++) |
rs27 | 0:401f3ae5ab50 | 570 | { |
rs27 | 0:401f3ae5ab50 | 571 | fprintf(fp, "\nschreibe eine Zeile %d ",i); |
rs27 | 0:401f3ae5ab50 | 572 | } |
rs27 | 0:401f3ae5ab50 | 573 | fclose(fp); |
rs27 | 0:401f3ae5ab50 | 574 | pc.printf("\ndone\n"); |
rs27 | 0:401f3ae5ab50 | 575 | } |
rs27 | 0:401f3ae5ab50 | 576 | |
rs27 | 0:401f3ae5ab50 | 577 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 578 | // monitor Aufruf rename |
rs27 | 0:401f3ae5ab50 | 579 | |
rs27 | 0:401f3ae5ab50 | 580 | void monitor::rename(void) |
rs27 | 0:401f3ae5ab50 | 581 | { |
rs27 | 0:401f3ae5ab50 | 582 | // char str1[20]; // neuer Dateiname |
rs27 | 0:401f3ae5ab50 | 583 | // char str2[25]; // neuer Dateiname |
rs27 | 0:401f3ae5ab50 | 584 | // char str3[20]; // alter Dateiname |
rs27 | 0:401f3ae5ab50 | 585 | // char str4[25]; // alter Dateiname |
rs27 | 0:401f3ae5ab50 | 586 | int ch; |
rs27 | 0:401f3ae5ab50 | 587 | |
rs27 | 0:401f3ae5ab50 | 588 | pc.printf("\nrename "); |
rs27 | 0:401f3ae5ab50 | 589 | sscanf(&mon_line[MonLinePtr],"%s %s",str3,str1); |
rs27 | 0:401f3ae5ab50 | 590 | sprintf(str4,"/sd/%s",str3); |
rs27 | 0:401f3ae5ab50 | 591 | pc.printf("%s ",str4); |
rs27 | 0:401f3ae5ab50 | 592 | FILE *fpold = fopen(str4, "r"); // src file |
rs27 | 0:401f3ae5ab50 | 593 | sprintf(str2,"/sd/%s",str1); |
rs27 | 0:401f3ae5ab50 | 594 | pc.printf("%s \n",str2); |
rs27 | 0:401f3ae5ab50 | 595 | FILE *fpnew = fopen(str2, "w"); // dest file |
rs27 | 0:401f3ae5ab50 | 596 | |
rs27 | 0:401f3ae5ab50 | 597 | while (1) // Copy src to dest |
rs27 | 0:401f3ae5ab50 | 598 | { |
rs27 | 0:401f3ae5ab50 | 599 | ch = fgetc(fpold); // until src EOF read. |
rs27 | 0:401f3ae5ab50 | 600 | if (ch == EOF) break; |
rs27 | 0:401f3ae5ab50 | 601 | fputc(ch, fpnew); |
rs27 | 0:401f3ae5ab50 | 602 | } |
rs27 | 0:401f3ae5ab50 | 603 | |
rs27 | 0:401f3ae5ab50 | 604 | fclose(fpnew); |
rs27 | 0:401f3ae5ab50 | 605 | fclose(fpold); |
rs27 | 0:401f3ae5ab50 | 606 | |
rs27 | 0:401f3ae5ab50 | 607 | fpnew = fopen(str2, "r"); // Reopen dest to insure |
rs27 | 0:401f3ae5ab50 | 608 | if(fpnew == NULL) // that it was created. |
rs27 | 0:401f3ae5ab50 | 609 | { |
rs27 | 0:401f3ae5ab50 | 610 | pc.printf("\nerror\n"); // Return Error. |
rs27 | 0:401f3ae5ab50 | 611 | } |
rs27 | 0:401f3ae5ab50 | 612 | else |
rs27 | 0:401f3ae5ab50 | 613 | { |
rs27 | 0:401f3ae5ab50 | 614 | fclose(fpnew); |
rs27 | 0:401f3ae5ab50 | 615 | remove(str4); // Remove original file. |
rs27 | 0:401f3ae5ab50 | 616 | pc.printf("\ndone\n"); // Return Success. |
rs27 | 0:401f3ae5ab50 | 617 | } |
rs27 | 0:401f3ae5ab50 | 618 | } |
rs27 | 0:401f3ae5ab50 | 619 | |
rs27 | 0:401f3ae5ab50 | 620 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 621 | // wird für die Abfrage der Tasten verwendet |
rs27 | 0:401f3ae5ab50 | 622 | |
rs27 | 0:401f3ae5ab50 | 623 | uint8_t monitor::taste(void) |
rs27 | 0:401f3ae5ab50 | 624 | { |
rs27 | 0:401f3ae5ab50 | 625 | tasten_old = tasten; |
rs27 | 0:401f3ae5ab50 | 626 | |
rs27 | 0:401f3ae5ab50 | 627 | while(1) |
rs27 | 0:401f3ae5ab50 | 628 | { |
rs27 | 0:401f3ae5ab50 | 629 | if (S1 == 0) tasten |= 0x01; else tasten &= ~0x01; |
rs27 | 0:401f3ae5ab50 | 630 | if (S2 == 0) tasten |= 0x02; else tasten &= ~0x02; |
rs27 | 0:401f3ae5ab50 | 631 | if (S3 == 0) tasten |= 0x04; else tasten &= ~0x04; |
rs27 | 0:401f3ae5ab50 | 632 | if (S4 == 0) tasten |= 0x08; else tasten &= ~0x08; |
rs27 | 0:401f3ae5ab50 | 633 | if (S5 == 0) tasten |= 0x10; else tasten &= ~0x10; |
rs27 | 0:401f3ae5ab50 | 634 | |
rs27 | 0:401f3ae5ab50 | 635 | if (tasten != tasten_old) |
rs27 | 0:401f3ae5ab50 | 636 | { |
rs27 | 0:401f3ae5ab50 | 637 | break; |
rs27 | 0:401f3ae5ab50 | 638 | } |
rs27 | 0:401f3ae5ab50 | 639 | com_line(); // in dieser Schleife läuft der Buffer sonst über |
rs27 | 0:401f3ae5ab50 | 640 | } |
rs27 | 0:401f3ae5ab50 | 641 | return tasten; |
rs27 | 0:401f3ae5ab50 | 642 | } |
rs27 | 0:401f3ae5ab50 | 643 | |
rs27 | 0:401f3ae5ab50 | 644 | //----------------------------------------------------------------------------- |
rs27 | 0:401f3ae5ab50 | 645 | // monitor Aufruf menu |
rs27 | 0:401f3ae5ab50 | 646 | |
rs27 | 0:401f3ae5ab50 | 647 | void monitor::read_menu(void) |
rs27 | 0:401f3ae5ab50 | 648 | { |
rs27 | 0:401f3ae5ab50 | 649 | uint8_t flag; |
rs27 | 0:401f3ae5ab50 | 650 | int anf, len, len_neu, end, index; |
rs27 | 0:401f3ae5ab50 | 651 | |
rs27 | 0:401f3ae5ab50 | 652 | char ch; |
rs27 | 0:401f3ae5ab50 | 653 | int n = 1, pos, a; |
rs27 | 0:401f3ae5ab50 | 654 | int wert; |
rs27 | 0:401f3ae5ab50 | 655 | |
rs27 | 0:401f3ae5ab50 | 656 | t.reset(); |
rs27 | 0:401f3ae5ab50 | 657 | t.start(); |
rs27 | 0:401f3ae5ab50 | 658 | |
rs27 | 0:401f3ae5ab50 | 659 | n = sscanf(&mon_line[MonLinePtr],"%s %s %s %s",str1,str2,str3,str4); |
rs27 | 0:401f3ae5ab50 | 660 | |
rs27 | 0:401f3ae5ab50 | 661 | if (n == 1) |
rs27 | 0:401f3ae5ab50 | 662 | { |
rs27 | 0:401f3ae5ab50 | 663 | pos = atoi(str1); |
rs27 | 0:401f3ae5ab50 | 664 | if (menu_var.getValue(pos,str2,str3,str4)) |
rs27 | 0:401f3ae5ab50 | 665 | { |
rs27 | 0:401f3ae5ab50 | 666 | pc.printf("\nmenu: %d; %s; %s; %s",pos,str2,str3,str4); |
rs27 | 0:401f3ae5ab50 | 667 | } |
rs27 | 0:401f3ae5ab50 | 668 | } |
rs27 | 0:401f3ae5ab50 | 669 | |
rs27 | 0:401f3ae5ab50 | 670 | t.stop(); |
rs27 | 0:401f3ae5ab50 | 671 | |
rs27 | 0:401f3ae5ab50 | 672 | lcd.set_lcd_flag(false); |
rs27 | 0:401f3ae5ab50 | 673 | |
rs27 | 0:401f3ae5ab50 | 674 | lcd.cls(); // LCD löschen |
rs27 | 0:401f3ae5ab50 | 675 | |
rs27 | 0:401f3ae5ab50 | 676 | wert = 555; |
rs27 | 0:401f3ae5ab50 | 677 | |
rs27 | 0:401f3ae5ab50 | 678 | //wert = atoi(str4); |
rs27 | 0:401f3ae5ab50 | 679 | sprintf(str4," %d",wert); |
rs27 | 0:401f3ae5ab50 | 680 | |
rs27 | 0:401f3ae5ab50 | 681 | end = 8; |
rs27 | 0:401f3ae5ab50 | 682 | len = strlen(str4); // drei Zeichen |
rs27 | 0:401f3ae5ab50 | 683 | anf = end - len; // position des erstes Zeichens in der Anzeige |
rs27 | 0:401f3ae5ab50 | 684 | index = len; // letzte Stelle im String |
rs27 | 0:401f3ae5ab50 | 685 | index--; // null zählt als das erste Zeichen |
rs27 | 0:401f3ae5ab50 | 686 | |
rs27 | 0:401f3ae5ab50 | 687 | while(1) |
rs27 | 0:401f3ae5ab50 | 688 | { |
rs27 | 0:401f3ae5ab50 | 689 | // Wert auf der Anzeige ausgeben und ändern |
rs27 | 0:401f3ae5ab50 | 690 | |
rs27 | 0:401f3ae5ab50 | 691 | sprintf(str4," %d",wert); |
rs27 | 0:401f3ae5ab50 | 692 | |
rs27 | 0:401f3ae5ab50 | 693 | len_neu = strlen(str4); // drei Zeichen |
rs27 | 0:401f3ae5ab50 | 694 | anf = end - len_neu; // Position bestimmen |
rs27 | 0:401f3ae5ab50 | 695 | index += (len_neu - len); |
rs27 | 0:401f3ae5ab50 | 696 | len = len_neu; |
rs27 | 0:401f3ae5ab50 | 697 | if (index < 0) index = 0; |
rs27 | 0:401f3ae5ab50 | 698 | lcd.print_LCD(str4,1,anf); |
rs27 | 0:401f3ae5ab50 | 699 | |
rs27 | 0:401f3ae5ab50 | 700 | ch = str4[index]; |
rs27 | 0:401f3ae5ab50 | 701 | |
rs27 | 0:401f3ae5ab50 | 702 | // Cursor setzen |
rs27 | 0:401f3ae5ab50 | 703 | a = lcd.address(anf + index,1); |
rs27 | 0:401f3ae5ab50 | 704 | lcd.writeCommand(a); |
rs27 | 0:401f3ae5ab50 | 705 | lcd.writeCommand(0x0F); // Curor einschalten |
rs27 | 0:401f3ae5ab50 | 706 | |
rs27 | 0:401f3ae5ab50 | 707 | pc.printf("\n[%s], anf %d, end %d, index %d",str4, anf, end, index); |
rs27 | 0:401f3ae5ab50 | 708 | |
rs27 | 0:401f3ae5ab50 | 709 | flag = taste(); |
rs27 | 0:401f3ae5ab50 | 710 | pc.printf("\ntaste %02x wert %d",flag,wert); |
rs27 | 0:401f3ae5ab50 | 711 | |
rs27 | 0:401f3ae5ab50 | 712 | switch (flag) |
rs27 | 0:401f3ae5ab50 | 713 | { |
rs27 | 0:401f3ae5ab50 | 714 | case 0x01: // left |
rs27 | 0:401f3ae5ab50 | 715 | if (index > 0) |
rs27 | 0:401f3ae5ab50 | 716 | { |
rs27 | 0:401f3ae5ab50 | 717 | index--; |
rs27 | 0:401f3ae5ab50 | 718 | } |
rs27 | 0:401f3ae5ab50 | 719 | break; |
rs27 | 0:401f3ae5ab50 | 720 | |
rs27 | 0:401f3ae5ab50 | 721 | case 0x02: // down |
rs27 | 0:401f3ae5ab50 | 722 | if( ch > '0') |
rs27 | 0:401f3ae5ab50 | 723 | { |
rs27 | 0:401f3ae5ab50 | 724 | ch--; |
rs27 | 0:401f3ae5ab50 | 725 | str4[index] = ch; |
rs27 | 0:401f3ae5ab50 | 726 | } |
rs27 | 0:401f3ae5ab50 | 727 | break; |
rs27 | 0:401f3ae5ab50 | 728 | |
rs27 | 0:401f3ae5ab50 | 729 | case 0x04: // up |
rs27 | 0:401f3ae5ab50 | 730 | if ((ch >= '0') && (ch < '9')) |
rs27 | 0:401f3ae5ab50 | 731 | { |
rs27 | 0:401f3ae5ab50 | 732 | ch++; |
rs27 | 0:401f3ae5ab50 | 733 | str4[index] = ch; |
rs27 | 0:401f3ae5ab50 | 734 | } |
rs27 | 0:401f3ae5ab50 | 735 | |
rs27 | 0:401f3ae5ab50 | 736 | if (ch == ' ') |
rs27 | 0:401f3ae5ab50 | 737 | { |
rs27 | 0:401f3ae5ab50 | 738 | ch = '1'; |
rs27 | 0:401f3ae5ab50 | 739 | str4[index] = ch; |
rs27 | 0:401f3ae5ab50 | 740 | } |
rs27 | 0:401f3ae5ab50 | 741 | |
rs27 | 0:401f3ae5ab50 | 742 | break; |
rs27 | 0:401f3ae5ab50 | 743 | |
rs27 | 0:401f3ae5ab50 | 744 | case 0x08: // rigth |
rs27 | 0:401f3ae5ab50 | 745 | if (index < len) |
rs27 | 0:401f3ae5ab50 | 746 | { |
rs27 | 0:401f3ae5ab50 | 747 | index++; |
rs27 | 0:401f3ae5ab50 | 748 | } |
rs27 | 0:401f3ae5ab50 | 749 | break; |
rs27 | 0:401f3ae5ab50 | 750 | |
rs27 | 0:401f3ae5ab50 | 751 | } // end while |
rs27 | 0:401f3ae5ab50 | 752 | |
rs27 | 0:401f3ae5ab50 | 753 | wert = atoi(str4); |
rs27 | 0:401f3ae5ab50 | 754 | if (flag == 0x10) break; |
rs27 | 0:401f3ae5ab50 | 755 | } |
rs27 | 0:401f3ae5ab50 | 756 | |
rs27 | 0:401f3ae5ab50 | 757 | // die alten Daten wieder anzeigen |
rs27 | 0:401f3ae5ab50 | 758 | lcd.writeCommand(0x0C); // Cursor ausschalten |
rs27 | 0:401f3ae5ab50 | 759 | wait_us(40); |
rs27 | 0:401f3ae5ab50 | 760 | |
rs27 | 0:401f3ae5ab50 | 761 | lcd.writeALL(); |
rs27 | 0:401f3ae5ab50 | 762 | lcd.set_lcd_flag(true); |
rs27 | 0:401f3ae5ab50 | 763 | |
rs27 | 0:401f3ae5ab50 | 764 | pc.printf("\ndone %f us\n",t.read()); // Return Success. |
rs27 | 0:401f3ae5ab50 | 765 | |
rs27 | 0:401f3ae5ab50 | 766 | } |