Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mon by
mon.cpp@2:512482b7f8c6, 2016-03-10 (annotated)
- Committer:
- rs27
- Date:
- Thu Mar 10 20:35:10 2016 +0000
- Revision:
- 2:512482b7f8c6
- Parent:
- 1:bf1028d27a23
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 | 1:bf1028d27a23 | 4 | // Chip....: iox.mini |
| rs27 | 0:401f3ae5ab50 | 5 | // |
| rs27 | 0:401f3ae5ab50 | 6 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 7 | // Author..: Reinhold Schäfer |
| rs27 | 1:bf1028d27a23 | 8 | // Date....: 2016.01.23 |
| 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 "MODSERIAL.h" |
| rs27 | 0:401f3ae5ab50 | 16 | #include "timer0.h" |
| rs27 | 0:401f3ae5ab50 | 17 | |
| rs27 | 0:401f3ae5ab50 | 18 | extern MODSERIAL pc; // definiert in main |
| rs27 | 1:bf1028d27a23 | 19 | extern timer0 down_timer; // Timer für Zeitsteuerung, definiert in main |
| rs27 | 2:512482b7f8c6 | 20 | |
| rs27 | 2:512482b7f8c6 | 21 | extern DigitalOut out1; |
| rs27 | 2:512482b7f8c6 | 22 | extern DigitalOut out2; |
| rs27 | 2:512482b7f8c6 | 23 | extern DigitalOut out3; |
| rs27 | 2:512482b7f8c6 | 24 | extern DigitalOut out4; |
| rs27 | 2:512482b7f8c6 | 25 | |
| rs27 | 1:bf1028d27a23 | 26 | #define COMMAND_MAX 5 |
| rs27 | 0:401f3ae5ab50 | 27 | #define COMMAND_LEN 7 |
| rs27 | 1:bf1028d27a23 | 28 | // "DUMP","HELP","SET","TIME"}; |
| rs27 | 2:512482b7f8c6 | 29 | const char command[COMMAND_MAX][COMMAND_LEN] = {"DUMP","HELP","SET","TIME"}; |
| rs27 | 0:401f3ae5ab50 | 30 | |
| rs27 | 0:401f3ae5ab50 | 31 | //----------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 32 | // constructor |
| rs27 | 0:401f3ae5ab50 | 33 | |
| rs27 | 0:401f3ae5ab50 | 34 | monitor::monitor(void) |
| rs27 | 0:401f3ae5ab50 | 35 | { |
| rs27 | 0:401f3ae5ab50 | 36 | uint8_t i; |
| rs27 | 0:401f3ae5ab50 | 37 | |
| rs27 | 0:401f3ae5ab50 | 38 | for (i = 0; i < MON_LINE_LEN; mon_line[i++] = 0); |
| rs27 | 0:401f3ae5ab50 | 39 | MonLinePtr = 0; |
| rs27 | 0:401f3ae5ab50 | 40 | } |
| rs27 | 0:401f3ae5ab50 | 41 | |
| rs27 | 0:401f3ae5ab50 | 42 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 43 | // |
| rs27 | 0:401f3ae5ab50 | 44 | // Function name : PARSER |
| rs27 | 0:401f3ae5ab50 | 45 | // |
| rs27 | 0:401f3ae5ab50 | 46 | // Returns : none |
| rs27 | 0:401f3ae5ab50 | 47 | // |
| rs27 | 0:401f3ae5ab50 | 48 | // Parameters : none |
| rs27 | 0:401f3ae5ab50 | 49 | // |
| rs27 | 0:401f3ae5ab50 | 50 | // Purpose : wertet die Eingangszeile aus und verzweigt zum gewünschten |
| rs27 | 0:401f3ae5ab50 | 51 | // Programm |
| rs27 | 0:401f3ae5ab50 | 52 | // |
| rs27 | 0:401f3ae5ab50 | 53 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 54 | void monitor::parser (void) |
| rs27 | 0:401f3ae5ab50 | 55 | { |
| rs27 | 0:401f3ae5ab50 | 56 | uint8_t i, ch, tch, top, bottom, len; |
| rs27 | 0:401f3ae5ab50 | 57 | int8_t res; |
| rs27 | 0:401f3ae5ab50 | 58 | |
| rs27 | 0:401f3ae5ab50 | 59 | // Zuerst wird der erste Buchstabe aus dem Eingabestring mit den ersten |
| rs27 | 0:401f3ae5ab50 | 60 | // Buchstaben aus der Befehlstabelle verglichen |
| rs27 | 0:401f3ae5ab50 | 61 | |
| rs27 | 0:401f3ae5ab50 | 62 | bottom = 0; // untere Suchgrenze |
| rs27 | 0:401f3ae5ab50 | 63 | top = COMMAND_MAX; // obere Suchgerenze |
| rs27 | 0:401f3ae5ab50 | 64 | ch = mon_line[0]; // hole erstes Suchzeichen |
| rs27 | 0:401f3ae5ab50 | 65 | |
| rs27 | 0:401f3ae5ab50 | 66 | do |
| rs27 | 0:401f3ae5ab50 | 67 | { |
| rs27 | 0:401f3ae5ab50 | 68 | i = (top + bottom) >> 1; // suche in der Mitte des Feldes beginnen |
| rs27 | 0:401f3ae5ab50 | 69 | tch = command [i][0]; // Vergleichszeichen laden |
| rs27 | 0:401f3ae5ab50 | 70 | if (tch == ch) break; // Zeichen gefunden |
| rs27 | 0:401f3ae5ab50 | 71 | if (tch > ch) top = i; // nach unten suchen |
| rs27 | 0:401f3ae5ab50 | 72 | else bottom = i; // nach oben suchen |
| rs27 | 0:401f3ae5ab50 | 73 | if (bottom != 0 && top == bottom + 1) break; // kein Buchstabe gef. |
| rs27 | 0:401f3ae5ab50 | 74 | |
| rs27 | 0:401f3ae5ab50 | 75 | } while (i > 0 && i < COMMAND_MAX - 1); |
| rs27 | 0:401f3ae5ab50 | 76 | |
| rs27 | 0:401f3ae5ab50 | 77 | if (tch != ch) |
| rs27 | 0:401f3ae5ab50 | 78 | { |
| rs27 | 0:401f3ae5ab50 | 79 | pc.printf("\nParser Kommando nicht gefunden\n"); |
| rs27 | 0:401f3ae5ab50 | 80 | return; // Kommando nicht gefunden wurde |
| rs27 | 0:401f3ae5ab50 | 81 | } |
| rs27 | 0:401f3ae5ab50 | 82 | |
| rs27 | 0:401f3ae5ab50 | 83 | // das erst Wort soll von den Übergabeparametern isoliert werden |
| rs27 | 0:401f3ae5ab50 | 84 | |
| rs27 | 0:401f3ae5ab50 | 85 | for (i = 0; mon_line[i] != ' ' && mon_line[i] != 0; i++); |
| rs27 | 0:401f3ae5ab50 | 86 | len = i; |
| rs27 | 0:401f3ae5ab50 | 87 | |
| rs27 | 0:401f3ae5ab50 | 88 | |
| rs27 | 0:401f3ae5ab50 | 89 | if (i == 0) return; |
| rs27 | 0:401f3ae5ab50 | 90 | |
| rs27 | 0:401f3ae5ab50 | 91 | // die Übergabparameter ermitteln und in als Indexzeiger in |
| rs27 | 0:401f3ae5ab50 | 92 | // 'ComLinePtr' abspeichern |
| rs27 | 0:401f3ae5ab50 | 93 | |
| rs27 | 0:401f3ae5ab50 | 94 | for ( ; mon_line[i] == ' ' && mon_line[i] != 0; i++); |
| rs27 | 0:401f3ae5ab50 | 95 | MonLinePtr = i; |
| rs27 | 0:401f3ae5ab50 | 96 | |
| rs27 | 0:401f3ae5ab50 | 97 | // die binäre Suche nach den restlichen Zeichen wird hier fortgesetzt |
| rs27 | 0:401f3ae5ab50 | 98 | |
| rs27 | 0:401f3ae5ab50 | 99 | do |
| rs27 | 0:401f3ae5ab50 | 100 | { |
| rs27 | 0:401f3ae5ab50 | 101 | i = (top + bottom) >> 1; // berechnen des Suchplatzes |
| rs27 | 0:401f3ae5ab50 | 102 | //printf_P (PSTR("\n\rVergleich 1 com_line = [%s] und Länge = [%d]"),com_line,len); |
| rs27 | 0:401f3ae5ab50 | 103 | //strcpy_P (temp, &command[i][0]); |
| rs27 | 0:401f3ae5ab50 | 104 | //printf_P (PSTR("\n\rVergleich 2 command[i] = [%s] und Index = [%d]"),temp,i); |
| rs27 | 0:401f3ae5ab50 | 105 | res = strncmp(mon_line, &command[i][0], len); |
| rs27 | 0:401f3ae5ab50 | 106 | //printf_P (PSTR("\n\rVergleich 3 res = [%d]"),res); |
| rs27 | 0:401f3ae5ab50 | 107 | if (res == 0) break; // Zeichen gefunden |
| rs27 | 0:401f3ae5ab50 | 108 | if (res > 0) |
| rs27 | 0:401f3ae5ab50 | 109 | bottom = i; // nach unten suchen |
| rs27 | 0:401f3ae5ab50 | 110 | else |
| rs27 | 0:401f3ae5ab50 | 111 | top = i; // nach oben suchen |
| rs27 | 0:401f3ae5ab50 | 112 | if (bottom != 0 && top == bottom + 1) break; |
| rs27 | 0:401f3ae5ab50 | 113 | |
| rs27 | 0:401f3ae5ab50 | 114 | } while (i > 0 && i < COMMAND_MAX - 1); |
| rs27 | 0:401f3ae5ab50 | 115 | |
| rs27 | 0:401f3ae5ab50 | 116 | |
| rs27 | 0:401f3ae5ab50 | 117 | if (res) |
| rs27 | 0:401f3ae5ab50 | 118 | { |
| rs27 | 0:401f3ae5ab50 | 119 | pc.printf("\nParser Kommando nicht gefunden.\n"); |
| rs27 | 0:401f3ae5ab50 | 120 | } |
| rs27 | 0:401f3ae5ab50 | 121 | else |
| rs27 | 0:401f3ae5ab50 | 122 | { |
| rs27 | 0:401f3ae5ab50 | 123 | pc.printf("\nAufruf von Funktion %d",i); |
| rs27 | 0:401f3ae5ab50 | 124 | |
| rs27 | 1:bf1028d27a23 | 125 | // "CLCD","DUMP","HELP","SET","TIME"}; |
| rs27 | 0:401f3ae5ab50 | 126 | |
| rs27 | 0:401f3ae5ab50 | 127 | switch(i) // Programmaufruf |
| rs27 | 0:401f3ae5ab50 | 128 | { |
| rs27 | 1:bf1028d27a23 | 129 | case 0: dump(); break; |
| rs27 | 1:bf1028d27a23 | 130 | case 1: help(); break; |
| rs27 | 2:512482b7f8c6 | 131 | case 2: set(); break; |
| rs27 | 2:512482b7f8c6 | 132 | case 3: time(); break; |
| rs27 | 0:401f3ae5ab50 | 133 | } |
| rs27 | 0:401f3ae5ab50 | 134 | } |
| rs27 | 0:401f3ae5ab50 | 135 | } |
| rs27 | 0:401f3ae5ab50 | 136 | |
| rs27 | 0:401f3ae5ab50 | 137 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 138 | // |
| rs27 | 0:401f3ae5ab50 | 139 | // Function name : monitor |
| rs27 | 0:401f3ae5ab50 | 140 | // |
| rs27 | 0:401f3ae5ab50 | 141 | // Returns : none |
| rs27 | 0:401f3ae5ab50 | 142 | // |
| rs27 | 0:401f3ae5ab50 | 143 | // Parameters : none |
| rs27 | 0:401f3ae5ab50 | 144 | // |
| rs27 | 0:401f3ae5ab50 | 145 | // Purpose : Monitor für die Benutzereingabe |
| rs27 | 0:401f3ae5ab50 | 146 | // |
| rs27 | 0:401f3ae5ab50 | 147 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 148 | void monitor::monPC(void) |
| rs27 | 0:401f3ae5ab50 | 149 | { |
| rs27 | 0:401f3ae5ab50 | 150 | uint8_t i; |
| rs27 | 0:401f3ae5ab50 | 151 | char ch; |
| rs27 | 0:401f3ae5ab50 | 152 | |
| rs27 | 0:401f3ae5ab50 | 153 | monLine(); |
| rs27 | 0:401f3ae5ab50 | 154 | if (cr_flag) // Neue Eingabezeile |
| rs27 | 0:401f3ae5ab50 | 155 | { |
| rs27 | 0:401f3ae5ab50 | 156 | if (mon_line[0] != 0) |
| rs27 | 0:401f3ae5ab50 | 157 | { |
| rs27 | 0:401f3ae5ab50 | 158 | // Zeichenkette in Großbuchstaben umwandeln |
| rs27 | 0:401f3ae5ab50 | 159 | for (i = 0; mon_line[i] != 0; i++) |
| rs27 | 0:401f3ae5ab50 | 160 | { |
| rs27 | 0:401f3ae5ab50 | 161 | ch = mon_line[i]; |
| rs27 | 0:401f3ae5ab50 | 162 | ch = toupper(ch); // Nur Großbuchstaben |
| rs27 | 0:401f3ae5ab50 | 163 | mon_line[i] = ch; |
| rs27 | 0:401f3ae5ab50 | 164 | //pc.printf(("\n[%02x] %c"),ch,ch); |
| rs27 | 0:401f3ae5ab50 | 165 | if (ch == ' ') i = MON_LINE_LEN; |
| rs27 | 0:401f3ae5ab50 | 166 | } |
| rs27 | 0:401f3ae5ab50 | 167 | |
| rs27 | 0:401f3ae5ab50 | 168 | // pc.printf("\n monitor %s", mon_line); // zum Testen => später wird der parcer aufgerufen |
| rs27 | 0:401f3ae5ab50 | 169 | parser(); // Parcer wird aufgerufen |
| rs27 | 0:401f3ae5ab50 | 170 | } |
| rs27 | 0:401f3ae5ab50 | 171 | |
| rs27 | 0:401f3ae5ab50 | 172 | for (i=0; i < MON_LINE_LEN; mon_line[i++] = 0); |
| rs27 | 0:401f3ae5ab50 | 173 | MonLinePtr = 0; |
| rs27 | 0:401f3ae5ab50 | 174 | cr_flag = 0; |
| rs27 | 0:401f3ae5ab50 | 175 | } |
| rs27 | 0:401f3ae5ab50 | 176 | } |
| rs27 | 0:401f3ae5ab50 | 177 | |
| rs27 | 0:401f3ae5ab50 | 178 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 179 | // |
| rs27 | 0:401f3ae5ab50 | 180 | // Function name : mon_line |
| rs27 | 0:401f3ae5ab50 | 181 | // |
| rs27 | 0:401f3ae5ab50 | 182 | // Returns : none |
| rs27 | 0:401f3ae5ab50 | 183 | // |
| rs27 | 0:401f3ae5ab50 | 184 | // Parameters : none |
| rs27 | 0:401f3ae5ab50 | 185 | // |
| rs27 | 0:401f3ae5ab50 | 186 | // Purpose : |
| rs27 | 0:401f3ae5ab50 | 187 | // Wird periodisch in unregelmäsigen Abständen aufgerufen und ermittelt, |
| rs27 | 0:401f3ae5ab50 | 188 | // ob weitere Zeichen von der Schnittstelle empfangen und die Eingabe |
| rs27 | 0:401f3ae5ab50 | 189 | // mit Carrige Return abgeschlossen wurde. Sollte dies der Fall sein, |
| rs27 | 0:401f3ae5ab50 | 190 | // wird das CR_FLAG gesetzt. Auch Editierfunktionen werden in diesem |
| rs27 | 0:401f3ae5ab50 | 191 | // Rahmen behandelt. |
| rs27 | 0:401f3ae5ab50 | 192 | // |
| rs27 | 0:401f3ae5ab50 | 193 | //--------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 194 | |
| rs27 | 0:401f3ae5ab50 | 195 | void monitor::monLine (void) |
| rs27 | 0:401f3ae5ab50 | 196 | { |
| rs27 | 0:401f3ae5ab50 | 197 | int ch; |
| rs27 | 0:401f3ae5ab50 | 198 | |
| rs27 | 0:401f3ae5ab50 | 199 | if (pc.readable() == false) return; // kein Zeichen vorhanden |
| rs27 | 0:401f3ae5ab50 | 200 | |
| rs27 | 0:401f3ae5ab50 | 201 | if (MonLinePtr >= 40) // Zeilenüberlauf ? |
| rs27 | 0:401f3ae5ab50 | 202 | { |
| rs27 | 0:401f3ae5ab50 | 203 | cr_flag = 1; |
| rs27 | 0:401f3ae5ab50 | 204 | return; |
| rs27 | 0:401f3ae5ab50 | 205 | } |
| rs27 | 0:401f3ae5ab50 | 206 | |
| rs27 | 0:401f3ae5ab50 | 207 | ch = pc.getc(); // Hole das Zeichen |
| rs27 | 0:401f3ae5ab50 | 208 | //pc.printf("\nmon_line: %c [%02x]",ch,ch); // nur zum Test |
| rs27 | 0:401f3ae5ab50 | 209 | |
| rs27 | 0:401f3ae5ab50 | 210 | switch(ch) |
| rs27 | 0:401f3ae5ab50 | 211 | { |
| rs27 | 0:401f3ae5ab50 | 212 | //case ESC: esc_flag = 1; // Sonder Stringkommandos |
| rs27 | 0:401f3ae5ab50 | 213 | // break; |
| rs27 | 0:401f3ae5ab50 | 214 | |
| rs27 | 0:401f3ae5ab50 | 215 | case '\r': // CARRIAGE RETURN |
| rs27 | 0:401f3ae5ab50 | 216 | cr_flag = 1; |
| rs27 | 0:401f3ae5ab50 | 217 | break; |
| rs27 | 0:401f3ae5ab50 | 218 | |
| rs27 | 0:401f3ae5ab50 | 219 | case '\n': // LF empfangen |
| rs27 | 0:401f3ae5ab50 | 220 | cr_flag = 1; |
| rs27 | 0:401f3ae5ab50 | 221 | break; |
| rs27 | 0:401f3ae5ab50 | 222 | |
| rs27 | 0:401f3ae5ab50 | 223 | default: // Normales Zeichen |
| rs27 | 0:401f3ae5ab50 | 224 | if (~iscntrl(ch)) |
| rs27 | 0:401f3ae5ab50 | 225 | { |
| rs27 | 0:401f3ae5ab50 | 226 | mon_line[MonLinePtr] = ch; // Zeichen einfuegen |
| rs27 | 0:401f3ae5ab50 | 227 | MonLinePtr++; |
| rs27 | 0:401f3ae5ab50 | 228 | // pc.putc(ch); |
| rs27 | 0:401f3ae5ab50 | 229 | } |
| rs27 | 0:401f3ae5ab50 | 230 | break; |
| rs27 | 0:401f3ae5ab50 | 231 | |
| rs27 | 0:401f3ae5ab50 | 232 | } // Ende SWITCH |
| rs27 | 0:401f3ae5ab50 | 233 | } |
| rs27 | 0:401f3ae5ab50 | 234 | |
| rs27 | 0:401f3ae5ab50 | 235 | //----------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 236 | // monitor Aufruf damp |
| rs27 | 0:401f3ae5ab50 | 237 | |
| rs27 | 0:401f3ae5ab50 | 238 | void monitor::dump(void) |
| rs27 | 0:401f3ae5ab50 | 239 | { |
| rs27 | 0:401f3ae5ab50 | 240 | pc.printf("\nin dump"); |
| rs27 | 1:bf1028d27a23 | 241 | } |
| rs27 | 0:401f3ae5ab50 | 242 | |
| rs27 | 0:401f3ae5ab50 | 243 | //----------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 244 | // monitor Aufruf help |
| rs27 | 0:401f3ae5ab50 | 245 | |
| rs27 | 0:401f3ae5ab50 | 246 | void monitor::help(void) |
| rs27 | 0:401f3ae5ab50 | 247 | { |
| rs27 | 0:401f3ae5ab50 | 248 | pc.printf("\n -- help ------------------------"); |
| rs27 | 0:401f3ae5ab50 | 249 | pc.printf("\n clcd val >> lcd Kontrast"); |
| rs27 | 2:512482b7f8c6 | 250 | pc.printf("\n set index [val] >> Ausgang setzen"); |
| rs27 | 0:401f3ae5ab50 | 251 | pc.printf("\n time [std min sek tag monat jahr]"); |
| rs27 | 0:401f3ae5ab50 | 252 | pc.printf("\n"); |
| rs27 | 0:401f3ae5ab50 | 253 | pc.printf("\n"); |
| rs27 | 0:401f3ae5ab50 | 254 | } |
| rs27 | 0:401f3ae5ab50 | 255 | |
| rs27 | 1:bf1028d27a23 | 256 | |
| rs27 | 1:bf1028d27a23 | 257 | //----------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 258 | // monitor Aufruf set |
| rs27 | 0:401f3ae5ab50 | 259 | |
| rs27 | 0:401f3ae5ab50 | 260 | void monitor::set(void) |
| rs27 | 0:401f3ae5ab50 | 261 | { |
| rs27 | 0:401f3ae5ab50 | 262 | int n, pos, val; |
| rs27 | 0:401f3ae5ab50 | 263 | |
| rs27 | 2:512482b7f8c6 | 264 | pos = 0; |
| rs27 | 2:512482b7f8c6 | 265 | val = 0; |
| rs27 | 2:512482b7f8c6 | 266 | |
| rs27 | 0:401f3ae5ab50 | 267 | n = sscanf(&mon_line[MonLinePtr],"%d %d",&pos,&val); |
| rs27 | 0:401f3ae5ab50 | 268 | |
| rs27 | 2:512482b7f8c6 | 269 | if ((pos < 0) || (pos > 4)) n = -1; |
| rs27 | 2:512482b7f8c6 | 270 | if ((val < 0) || (val >1)) n = -1; |
| rs27 | 2:512482b7f8c6 | 271 | |
| rs27 | 0:401f3ae5ab50 | 272 | switch (n) |
| rs27 | 0:401f3ae5ab50 | 273 | { |
| rs27 | 2:512482b7f8c6 | 274 | case -1: |
| rs27 | 2:512482b7f8c6 | 275 | pc.printf("\nbitte [Ausgang] [Wert] angeben"); |
| rs27 | 2:512482b7f8c6 | 276 | pc.printf("\n Ausgang >> 1 bis 6"); |
| rs27 | 2:512482b7f8c6 | 277 | pc.printf("\n Wert >> 0 = inaktiv, 1 = aktiv"); |
| rs27 | 2:512482b7f8c6 | 278 | break; |
| rs27 | 2:512482b7f8c6 | 279 | |
| rs27 | 2:512482b7f8c6 | 280 | default: |
| rs27 | 2:512482b7f8c6 | 281 | switch (pos) |
| rs27 | 2:512482b7f8c6 | 282 | { |
| rs27 | 2:512482b7f8c6 | 283 | case 1: |
| rs27 | 2:512482b7f8c6 | 284 | pc.printf("\n Ausgang 1 = %d",val); |
| rs27 | 2:512482b7f8c6 | 285 | out1 = val; |
| rs27 | 2:512482b7f8c6 | 286 | break; |
| rs27 | 2:512482b7f8c6 | 287 | case 2: |
| rs27 | 2:512482b7f8c6 | 288 | pc.printf("\n Ausgang 2 = %d",val); |
| rs27 | 2:512482b7f8c6 | 289 | out2 = val; |
| rs27 | 2:512482b7f8c6 | 290 | break; |
| rs27 | 2:512482b7f8c6 | 291 | case 3: |
| rs27 | 2:512482b7f8c6 | 292 | pc.printf("\n Ausgang 3 = %d",val); |
| rs27 | 2:512482b7f8c6 | 293 | out3 = val; |
| rs27 | 2:512482b7f8c6 | 294 | break; |
| rs27 | 2:512482b7f8c6 | 295 | case 4: |
| rs27 | 2:512482b7f8c6 | 296 | pc.printf("\n Ausgang 4 = %d",val); |
| rs27 | 2:512482b7f8c6 | 297 | out4 = val; |
| rs27 | 2:512482b7f8c6 | 298 | break; |
| rs27 | 2:512482b7f8c6 | 299 | } |
| rs27 | 2:512482b7f8c6 | 300 | break; |
| rs27 | 0:401f3ae5ab50 | 301 | } // end switch |
| rs27 | 0:401f3ae5ab50 | 302 | } |
| rs27 | 0:401f3ae5ab50 | 303 | |
| rs27 | 0:401f3ae5ab50 | 304 | //----------------------------------------------------------------------------- |
| rs27 | 0:401f3ae5ab50 | 305 | // monitor Aufruf time |
| rs27 | 0:401f3ae5ab50 | 306 | |
| rs27 | 0:401f3ae5ab50 | 307 | void monitor::time(void) |
| rs27 | 0:401f3ae5ab50 | 308 | { |
| rs27 | 0:401f3ae5ab50 | 309 | int sek, min, std, day, month, year, n; |
| rs27 | 0:401f3ae5ab50 | 310 | |
| rs27 | 0:401f3ae5ab50 | 311 | sek = 0; |
| rs27 | 0:401f3ae5ab50 | 312 | min = 0; |
| rs27 | 0:401f3ae5ab50 | 313 | std = 0; |
| rs27 | 0:401f3ae5ab50 | 314 | day = 0; |
| rs27 | 0:401f3ae5ab50 | 315 | month = 0; |
| rs27 | 0:401f3ae5ab50 | 316 | year = 0; |
| rs27 | 0:401f3ae5ab50 | 317 | |
| rs27 | 0:401f3ae5ab50 | 318 | n = sscanf(&mon_line[MonLinePtr],"%d %d %d %d %d %d",&std, &min, &sek, &day, &month, &year); |
| rs27 | 0:401f3ae5ab50 | 319 | |
| rs27 | 0:401f3ae5ab50 | 320 | switch (n) |
| rs27 | 0:401f3ae5ab50 | 321 | { |
| rs27 | 0:401f3ae5ab50 | 322 | case -1 : // keine Zeichenübergabe |
| rs27 | 0:401f3ae5ab50 | 323 | case 0 : // keine Zeichenübergabe |
| rs27 | 0:401f3ae5ab50 | 324 | |
| rs27 | 0:401f3ae5ab50 | 325 | strftime(buffer, 40, "%a, %d.%m.%Y %H:%M:%S", localtime(&down_timer.seconds)); |
| rs27 | 0:401f3ae5ab50 | 326 | pc.printf("\nTime = %s\n", buffer); |
| rs27 | 0:401f3ae5ab50 | 327 | break; |
| rs27 | 0:401f3ae5ab50 | 328 | |
| rs27 | 0:401f3ae5ab50 | 329 | case 1 : // std |
| rs27 | 0:401f3ae5ab50 | 330 | case 2 : // min |
| rs27 | 0:401f3ae5ab50 | 331 | case 3 : // sek |
| rs27 | 0:401f3ae5ab50 | 332 | case 4 : // tag |
| rs27 | 0:401f3ae5ab50 | 333 | case 5 : // mon |
| rs27 | 0:401f3ae5ab50 | 334 | case 6 : // jahr |
| rs27 | 0:401f3ae5ab50 | 335 | |
| rs27 | 0:401f3ae5ab50 | 336 | if (sek > 59) sek = 59; |
| rs27 | 0:401f3ae5ab50 | 337 | if (sek < 0) sek = 0; |
| rs27 | 0:401f3ae5ab50 | 338 | buffer[0] = (uint8_t)sek;; |
| rs27 | 0:401f3ae5ab50 | 339 | |
| rs27 | 0:401f3ae5ab50 | 340 | if (min > 59) min = 59; |
| rs27 | 0:401f3ae5ab50 | 341 | if (min < 0) min = 0; |
| rs27 | 0:401f3ae5ab50 | 342 | buffer[1] = (uint8_t)min; |
| rs27 | 0:401f3ae5ab50 | 343 | |
| rs27 | 0:401f3ae5ab50 | 344 | if (std > 23) std = 23; |
| rs27 | 0:401f3ae5ab50 | 345 | if (std < 0) std = 0; |
| rs27 | 0:401f3ae5ab50 | 346 | buffer[2] = (uint8_t)std; |
| rs27 | 0:401f3ae5ab50 | 347 | |
| rs27 | 0:401f3ae5ab50 | 348 | if (day > 31) day = 31; |
| rs27 | 0:401f3ae5ab50 | 349 | if (day < 0) day = 0; |
| rs27 | 0:401f3ae5ab50 | 350 | buffer[3] = (uint8_t)day;; |
| rs27 | 0:401f3ae5ab50 | 351 | |
| rs27 | 0:401f3ae5ab50 | 352 | if (month > 12) month = 12; |
| rs27 | 0:401f3ae5ab50 | 353 | if (month < 0) month = 0; |
| rs27 | 0:401f3ae5ab50 | 354 | buffer[4] = (uint8_t)month; |
| rs27 | 0:401f3ae5ab50 | 355 | |
| rs27 | 0:401f3ae5ab50 | 356 | if (year > 2100) year = 2100; |
| rs27 | 0:401f3ae5ab50 | 357 | if (year < 2000) year = 2000; |
| rs27 | 0:401f3ae5ab50 | 358 | buffer[5] = (uint8_t)(year - 1900); |
| rs27 | 0:401f3ae5ab50 | 359 | |
| rs27 | 1:bf1028d27a23 | 360 | |
| rs27 | 0:401f3ae5ab50 | 361 | down_timer.Set_t((uint8_t *)buffer); |
| rs27 | 0:401f3ae5ab50 | 362 | |
| rs27 | 0:401f3ae5ab50 | 363 | strftime(buffer, 40, "%a, %d.%m.%Y %H:%M:%S", localtime(&down_timer.seconds)); |
| rs27 | 0:401f3ae5ab50 | 364 | pc.printf("\nnew Time = %s\n", buffer); |
| rs27 | 0:401f3ae5ab50 | 365 | break; |
| rs27 | 0:401f3ae5ab50 | 366 | } |
| rs27 | 0:401f3ae5ab50 | 367 | } |
| rs27 | 0:401f3ae5ab50 | 368 |
