Console Serial IO con display OLED e seriale asincrona

Dependencies:   mbed BufferedSerial AserialIOFuncLib SSD1306 TerminalPlusV2

Fork of SerialIO by Max Scordamaglia

Console Serial IO con display OLED e seriale asincrona

Committer:
MaxScorda
Date:
Thu Dec 12 20:58:45 2019 +0000
Revision:
45:58713cc78010
Parent:
44:d8c12d28f3f2
Info

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 39:0d7165083e7a 1 // istanze di funzioni per metterle poi dove si vuole
MaxScorda 39:0d7165083e7a 2 bool funcfromMenu(int);
MaxScorda 40:48422add4537 3 int contaMenuFunc();
MaxScorda 39:0d7165083e7a 4 //-------------------------------------------------
MaxScorda 39:0d7165083e7a 5
MaxScorda 39:0d7165083e7a 6 void choiceVideoSettings()
MaxScorda 39:0d7165083e7a 7 {
MaxScorda 39:0d7165083e7a 8 string prefix;
MaxScorda 40:48422add4537 9 bool bbold;
MaxScorda 39:0d7165083e7a 10 //stampo menu
MaxScorda 39:0d7165083e7a 11 for (int i = 0; i<10 ; i++) {
MaxScorda 39:0d7165083e7a 12 if (i==menuidx) {
MaxScorda 40:48422add4537 13 bbold=1;
MaxScorda 39:0d7165083e7a 14 prefix="*";
MaxScorda 39:0d7165083e7a 15 } else {
MaxScorda 40:48422add4537 16 bbold=0;
MaxScorda 39:0d7165083e7a 17 prefix=" ";
MaxScorda 39:0d7165083e7a 18 }
MaxScorda 40:48422add4537 19 term.formatPrintf(fnzAdd.string2char(prefix+menu_main[i]),1,4+i,19,bbold);
MaxScorda 39:0d7165083e7a 20 }
MaxScorda 39:0d7165083e7a 21 //info terminale
MaxScorda 39:0d7165083e7a 22 term.formatPrintf("Menu Add \n",61,p52,19,1); //p52
MaxScorda 40:48422add4537 23
MaxScorda 39:0d7165083e7a 24 funcfromMenu(menuidx);
MaxScorda 39:0d7165083e7a 25 }
MaxScorda 39:0d7165083e7a 26
MaxScorda 39:0d7165083e7a 27 void writeLogInput(string strIn)
MaxScorda 39:0d7165083e7a 28 {
MaxScorda 39:0d7165083e7a 29 // stampa i splitta i parametri in ingesso
MaxScorda 39:0d7165083e7a 30 string func;
MaxScorda 39:0d7165083e7a 31 string funcnum;
MaxScorda 39:0d7165083e7a 32 string param;
MaxScorda 39:0d7165083e7a 33 func=strIn.substr(0,1);
MaxScorda 39:0d7165083e7a 34 funcnum=strIn.substr(1,1);
MaxScorda 39:0d7165083e7a 35 param=strIn.substr(2,3);
MaxScorda 39:0d7165083e7a 36 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),11,p01,10,1); //p01
MaxScorda 39:0d7165083e7a 37 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),39,p02,10,1); //p02
MaxScorda 39:0d7165083e7a 38 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),61,p03,10,1); //p03
MaxScorda 39:0d7165083e7a 39 //write input string
MaxScorda 39:0d7165083e7a 40 term.formatPrintf(fnzAdd.string2char(strIn.substr(0,17)),21,p51,10,1); //p51
MaxScorda 39:0d7165083e7a 41 //---------------------------------------------------------------------------------------------
MaxScorda 39:0d7165083e7a 42 }
MaxScorda 39:0d7165083e7a 43
MaxScorda 41:fb612a3936fb 44 int trovaIndiceFunzione(string strIn)
MaxScorda 36:9ecb98d7c2cd 45 {
MaxScorda 41:fb612a3936fb 46 //data la stringa di menu e funzione, restituisce l'indice
MaxScorda 40:48422add4537 47 int idx=0;
MaxScorda 40:48422add4537 48 bool trovato=false;
MaxScorda 40:48422add4537 49 //cerca valore. Per ora facciamo cosi, poi si vede se indicizzarlo
MaxScorda 40:48422add4537 50 while ((trovato==false) && (idx<50)) {
MaxScorda 40:48422add4537 51 if ((strIn.substr(0,1)==fnzAdd.i2s(function_val[idx][0])) && (strIn.substr(2,1)==fnzAdd.i2s(function_val[idx][1]))) trovato=true;
MaxScorda 40:48422add4537 52 else idx++;
MaxScorda 40:48422add4537 53 }
MaxScorda 41:fb612a3936fb 54 return idx;
MaxScorda 41:fb612a3936fb 55 }
MaxScorda 41:fb612a3936fb 56
MaxScorda 41:fb612a3936fb 57
MaxScorda 42:8ca8ff1ab387 58 void writeFunctionVal(string strIn, int fullstampa=1)
MaxScorda 41:fb612a3936fb 59 {
MaxScorda 41:fb612a3936fb 60 //scrivi a video i valori funzione
MaxScorda 41:fb612a3936fb 61 int idx=trovaIndiceFunzione(strIn);
MaxScorda 40:48422add4537 62 //stampo
MaxScorda 41:fb612a3936fb 63 if (idx<50) { //non dovrebbe servire
MaxScorda 42:8ca8ff1ab387 64 if (fullstampa==1) {
MaxScorda 42:8ca8ff1ab387 65 term.formatPrintf(fnzAdd.string2char(fnzAdd.i2s(function_val[idx][2])),50,16,10); //min
MaxScorda 42:8ca8ff1ab387 66 term.formatPrintf(fnzAdd.string2char(fnzAdd.i2s(function_val[idx][5])),60,16,10); //start
MaxScorda 42:8ca8ff1ab387 67 term.formatPrintf(fnzAdd.string2char(fnzAdd.i2s(function_val[idx][3])),70,16,10); //max
MaxScorda 42:8ca8ff1ab387 68 }
MaxScorda 40:48422add4537 69 term.formatPrintf(fnzAdd.string2char(fnzAdd.i2s(function_val[idx][6])),70,4+funcidx,10); //valore attuale di fianco alla riga
MaxScorda 40:48422add4537 70 }
MaxScorda 40:48422add4537 71 }
MaxScorda 38:d88296cbb39c 72
MaxScorda 38:d88296cbb39c 73
MaxScorda 38:d88296cbb39c 74 //********************* Led
MaxScorda 38:d88296cbb39c 75 bool Lfunc(string func, string funcnum, string param)
MaxScorda 38:d88296cbb39c 76 {
MaxScorda 38:d88296cbb39c 77 bool errp=1;
MaxScorda 38:d88296cbb39c 78
MaxScorda 38:d88296cbb39c 79 if (funcnum=="1") {
MaxScorda 38:d88296cbb39c 80 if (param=="on ") {
MaxScorda 38:d88296cbb39c 81 term.formatPrintf("Led ACCESO \n",61,p52,99,1); //p52
MaxScorda 39:0d7165083e7a 82 ardser.printf("\nLed ACCESO \n\r");
MaxScorda 38:d88296cbb39c 83 printDisp(dispType,"Led ACCESO \n\r");
MaxScorda 38:d88296cbb39c 84 led.onOff(1); //Accende il led
MaxScorda 38:d88296cbb39c 85 errp=0;
MaxScorda 38:d88296cbb39c 86 }
MaxScorda 38:d88296cbb39c 87 if (param=="off") {
MaxScorda 38:d88296cbb39c 88 term.formatPrintf("Led SPENTO! \n",61,p52,99,1); //p52
MaxScorda 39:0d7165083e7a 89 ardser.printf("\nLed SPENTO! \n\r");
MaxScorda 38:d88296cbb39c 90 printDisp(dispType,"Led SPENTO \n\r");
MaxScorda 38:d88296cbb39c 91 led.onOff(0); //Spegne il led
MaxScorda 38:d88296cbb39c 92 errp=0;
MaxScorda 38:d88296cbb39c 93 }
MaxScorda 38:d88296cbb39c 94 }
MaxScorda 38:d88296cbb39c 95 return errp;
MaxScorda 38:d88296cbb39c 96 }
MaxScorda 38:d88296cbb39c 97
MaxScorda 38:d88296cbb39c 98
MaxScorda 38:d88296cbb39c 99 //********************** cambio menu
MaxScorda 39:0d7165083e7a 100 bool funcfromMenu(int funcnum)
MaxScorda 38:d88296cbb39c 101 {
MaxScorda 38:d88296cbb39c 102 // funzione di load funzioni da menu scelto
MaxScorda 38:d88296cbb39c 103 bool errp=1;
MaxScorda 39:0d7165083e7a 104 int tempm;
MaxScorda 39:0d7165083e7a 105 int ccmenu=0; //indice vettore funzioni selezionate
MaxScorda 39:0d7165083e7a 106 int ccfun=0; //indice vettore funzione principale
MaxScorda 40:48422add4537 107 int contoldfun, contonewfun; //conta le voci di menu prima di sostituirlo
MaxScorda 38:d88296cbb39c 108 string funzionen;
MaxScorda 40:48422add4537 109 string prefix; //prefisso asterisco per voci selezionate
MaxScorda 40:48422add4537 110 bool bbold=0; //postfisso bold per righe selezionate
MaxScorda 40:48422add4537 111 contoldfun=contaMenuFunc();
MaxScorda 38:d88296cbb39c 112 //filtro vettore funzioni in base la menu
MaxScorda 39:0d7165083e7a 113 funzionen=menu_function[ccmenu];
MaxScorda 39:0d7165083e7a 114 while ((funzionen.substr(0,1)!="Z") && (ccmenu<=99)) {
MaxScorda 38:d88296cbb39c 115 // confronto il primo carattere dell vettore funzioni col primo carattere del menu
MaxScorda 39:0d7165083e7a 116 tempm=atoi(fnzAdd.string2char(funzionen.substr(0,1)));
MaxScorda 38:d88296cbb39c 117 // se = metto il valore del vettore funzioni nel vettore funzioni scelte
MaxScorda 39:0d7165083e7a 118 if (menuidx==tempm) {
MaxScorda 38:d88296cbb39c 119 menu_funcChoice[ccfun]=menu_function[ccmenu];
MaxScorda 38:d88296cbb39c 120 ccfun++;
MaxScorda 38:d88296cbb39c 121 }
MaxScorda 38:d88296cbb39c 122 ccmenu++;
MaxScorda 39:0d7165083e7a 123 funzionen=menu_function[ccmenu]; //assegna la stringa del menu
MaxScorda 39:0d7165083e7a 124 }
MaxScorda 39:0d7165083e7a 125 menu_funcChoice[ccfun]="Z.Z"; //setto lo stop
MaxScorda 40:48422add4537 126 contonewfun=contaMenuFunc();
MaxScorda 40:48422add4537 127 // menu fatti, ora funzioni
MaxScorda 39:0d7165083e7a 128 if (ccfun>0) { //non dovrebbe avvenire diversamente perche' 1 ci deve esere ma e' da trappare
MaxScorda 39:0d7165083e7a 129 //azzero da dove sono in giu'
MaxScorda 40:48422add4537 130 for (int i = contonewfun+1; i <=contoldfun ; i++) {
MaxScorda 40:48422add4537 131 term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr(" ",38,' ')),41,4+i);
MaxScorda 39:0d7165083e7a 132 }
MaxScorda 40:48422add4537 133 //scrivo dalla prima allo scelto
MaxScorda 40:48422add4537 134 funcidx=0;
MaxScorda 39:0d7165083e7a 135 for (int i = 0; i <ccfun ; i++) {
MaxScorda 40:48422add4537 136 if (i==funcidx) {
MaxScorda 40:48422add4537 137 bbold=1;
MaxScorda 40:48422add4537 138 prefix="*";
MaxScorda 40:48422add4537 139 } else {
MaxScorda 40:48422add4537 140 bbold=0;
MaxScorda 40:48422add4537 141 prefix=" ";
MaxScorda 40:48422add4537 142 }
MaxScorda 41:fb612a3936fb 143 term.formatPrintf(fnzAdd.string2char(prefix+menu_funcChoice[i]),41,4+i,38,bbold); //stampo funzione in bold
MaxScorda 39:0d7165083e7a 144 }
MaxScorda 41:fb612a3936fb 145 writeFunctionVal(menu_funcChoice[funcidx].substr(0,3)); //scrivo valore
MaxScorda 39:0d7165083e7a 146 }
MaxScorda 40:48422add4537 147
MaxScorda 41:fb612a3936fb 148 // errp=0; //per ora non fa nulla, vedere se tenere a uso futuro
MaxScorda 38:d88296cbb39c 149 return errp;
MaxScorda 38:d88296cbb39c 150 }
MaxScorda 38:d88296cbb39c 151
MaxScorda 40:48422add4537 152 bool funcOut(string func, string sstr)
MaxScorda 38:d88296cbb39c 153 {
MaxScorda 40:48422add4537 154 //setta la funzione in uso
MaxScorda 38:d88296cbb39c 155 bool errp=1;
MaxScorda 40:48422add4537 156 string funcc;
MaxScorda 40:48422add4537 157 int contoldfun=0; //conta le voci di menu prima di sostituirlo
MaxScorda 40:48422add4537 158 contoldfun=contaMenuFunc();
MaxScorda 40:48422add4537 159 funcc=sstr.substr(1,1);
MaxScorda 40:48422add4537 160 if ((funcc>="0") && (funcc<="9")) {
MaxScorda 40:48422add4537 161 contoldfun=fnzAdd.min(contoldfun,atoi(fnzAdd.string2char(funcc))); //assegno il minimo
MaxScorda 38:d88296cbb39c 162 //azzero
MaxScorda 40:48422add4537 163 term.resetattrib();
MaxScorda 40:48422add4537 164 term.formatPrintf(fnzAdd.string2char(" "+menu_funcChoice[funcidx]),41,4+funcidx,38);
MaxScorda 40:48422add4537 165 // scrivo in console
MaxScorda 40:48422add4537 166 term.bold();
MaxScorda 40:48422add4537 167 funcidx=contoldfun;
MaxScorda 40:48422add4537 168 term.formatPrintf(fnzAdd.string2char("*"+menu_funcChoice[funcidx]),41,4+funcidx,38);
MaxScorda 40:48422add4537 169 term.resetattrib();
MaxScorda 41:fb612a3936fb 170 //invio ad arduino
MaxScorda 41:fb612a3936fb 171 //ardser.printf(fnzAdd.string2char("f"+fnzAdd.padstr(fnzAdd.i2s(trovaIndiceFunzione(menu_funcChoice[funcidx])),2,' ')+"\r")); // no, questa passa il valore dell'indice
MaxScorda 41:fb612a3936fb 172 ardser.printf(fnzAdd.string2char("f"+funcc+"\r"));
MaxScorda 40:48422add4537 173 // scrivo valori della funzione a video
MaxScorda 40:48422add4537 174 writeFunctionVal(menu_funcChoice[funcidx].substr(0,3));
MaxScorda 40:48422add4537 175 //display
MaxScorda 40:48422add4537 176 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Set Funzione "+funcc+"\n")),61,p52,99,1); //p52
MaxScorda 40:48422add4537 177 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS("Set Funzione "+funcc+"\r")));
MaxScorda 41:fb612a3936fb 178 errp=0;
MaxScorda 41:fb612a3936fb 179 }
MaxScorda 40:48422add4537 180 return errp;
MaxScorda 40:48422add4537 181 }
MaxScorda 40:48422add4537 182
MaxScorda 40:48422add4537 183 bool menuOut(string func, string sstr)
MaxScorda 40:48422add4537 184 {
MaxScorda 40:48422add4537 185 //setta il menu in uso
MaxScorda 40:48422add4537 186 bool errp=1;
MaxScorda 40:48422add4537 187 string funcc;
MaxScorda 40:48422add4537 188 funcc=sstr.substr(1,1);
MaxScorda 40:48422add4537 189 if ((funcc>="0") && (funcc<="9")) {
MaxScorda 40:48422add4537 190 //azzero
MaxScorda 40:48422add4537 191 term.resetattrib();
MaxScorda 40:48422add4537 192 term.formatPrintf(fnzAdd.string2char(" "+menu_main[menuidx]),1,4+menuidx,19);
MaxScorda 38:d88296cbb39c 193 // scrivo
MaxScorda 40:48422add4537 194 term.bold();
MaxScorda 40:48422add4537 195 menuidx=atoi(fnzAdd.string2char(funcc));
MaxScorda 40:48422add4537 196 term.formatPrintf(fnzAdd.string2char("*"+menu_main[menuidx]),1,4+menuidx,19);
MaxScorda 40:48422add4537 197 term.resetattrib();
MaxScorda 41:fb612a3936fb 198 //invio ad arduino
MaxScorda 41:fb612a3936fb 199 ardser.printf(fnzAdd.string2char("m"+funcc+"\r"));
MaxScorda 40:48422add4537 200 //setto funzioni
MaxScorda 40:48422add4537 201 funcfromMenu(menuidx);
MaxScorda 40:48422add4537 202 //display
MaxScorda 40:48422add4537 203 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Set Menu "+funcc+"\n")),61,p52,99,1); //p52
MaxScorda 40:48422add4537 204 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS("Set Menu "+funcc+"\r")));
MaxScorda 41:fb612a3936fb 205 errp=0;
MaxScorda 41:fb612a3936fb 206 }
MaxScorda 38:d88296cbb39c 207 return errp;
MaxScorda 38:d88296cbb39c 208 }
MaxScorda 38:d88296cbb39c 209
MaxScorda 36:9ecb98d7c2cd 210
MaxScorda 36:9ecb98d7c2cd 211 //************************ Random Out
MaxScorda 42:8ca8ff1ab387 212 bool RfuncOut(string func,string sstr)
MaxScorda 36:9ecb98d7c2cd 213 {
MaxScorda 36:9ecb98d7c2cd 214 bool errp=1;
MaxScorda 42:8ca8ff1ab387 215 string funcc;
MaxScorda 42:8ca8ff1ab387 216 funcc=sstr.substr(1,3);
MaxScorda 42:8ca8ff1ab387 217
MaxScorda 42:8ca8ff1ab387 218 if (funcc=="on ") {
MaxScorda 42:8ca8ff1ab387 219 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("On")),39,p17,10,1);
MaxScorda 42:8ca8ff1ab387 220 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS("ron\r")));
MaxScorda 42:8ca8ff1ab387 221 printDisp(dispType,"Random On \n\r");
MaxScorda 42:8ca8ff1ab387 222 randomActivate=true;
MaxScorda 42:8ca8ff1ab387 223 } else {
MaxScorda 42:8ca8ff1ab387 224 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),39,p17,10,1);
MaxScorda 42:8ca8ff1ab387 225 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS("roff\r")));
MaxScorda 42:8ca8ff1ab387 226 printDisp(dispType,"Random OFF\n\r");
MaxScorda 42:8ca8ff1ab387 227 randomActivate=false;
MaxScorda 42:8ca8ff1ab387 228 }
MaxScorda 42:8ca8ff1ab387 229 errp=0;
MaxScorda 42:8ca8ff1ab387 230 return errp;
MaxScorda 42:8ca8ff1ab387 231 }
MaxScorda 42:8ca8ff1ab387 232
MaxScorda 42:8ca8ff1ab387 233 //************************ Sensori Out
MaxScorda 42:8ca8ff1ab387 234 bool sensorOut(string func,string sstr)
MaxScorda 42:8ca8ff1ab387 235 {
MaxScorda 42:8ca8ff1ab387 236 bool errp=1;
MaxScorda 42:8ca8ff1ab387 237 string funcc;
MaxScorda 42:8ca8ff1ab387 238 funcc=sstr.substr(1,3);
MaxScorda 42:8ca8ff1ab387 239
MaxScorda 42:8ca8ff1ab387 240 if (funcc=="on ") {
MaxScorda 42:8ca8ff1ab387 241 // term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("On")),39,p17,10,1); ///mettere a video!!!1
MaxScorda 42:8ca8ff1ab387 242 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS("son\r")));
MaxScorda 42:8ca8ff1ab387 243 printDisp(dispType,"Sensor On \n\r");
MaxScorda 42:8ca8ff1ab387 244 randomActivate=true;
MaxScorda 42:8ca8ff1ab387 245 } else {
MaxScorda 42:8ca8ff1ab387 246 // term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),39,p17,10,1); ///mettere a video!!!1
MaxScorda 42:8ca8ff1ab387 247 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS("soff\r")));
MaxScorda 42:8ca8ff1ab387 248 printDisp(dispType,"Sensor OFF\n\r");
MaxScorda 42:8ca8ff1ab387 249 randomActivate=false;
MaxScorda 42:8ca8ff1ab387 250 }
MaxScorda 42:8ca8ff1ab387 251 errp=0;
MaxScorda 42:8ca8ff1ab387 252 return errp;
MaxScorda 36:9ecb98d7c2cd 253 }
MaxScorda 36:9ecb98d7c2cd 254
MaxScorda 36:9ecb98d7c2cd 255 //********************* Start
MaxScorda 36:9ecb98d7c2cd 256 bool StartfuncOut()
MaxScorda 36:9ecb98d7c2cd 257 {
MaxScorda 41:fb612a3936fb 258 status=true;
MaxScorda 41:fb612a3936fb 259 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("On")),11,p16,10,1);
MaxScorda 38:d88296cbb39c 260 term.formatPrintf("Start\n",21,p51,8,1); //p51
MaxScorda 38:d88296cbb39c 261 term.formatPrintf("Start H-Ard\n",61,p52,99,1); //p52
MaxScorda 36:9ecb98d7c2cd 262 ardser.printf("start\r");
MaxScorda 36:9ecb98d7c2cd 263 printDisp(dispType,"Start H-Ard\n\r");
MaxScorda 36:9ecb98d7c2cd 264 return 0;
MaxScorda 36:9ecb98d7c2cd 265 }
MaxScorda 36:9ecb98d7c2cd 266
MaxScorda 36:9ecb98d7c2cd 267 //********************* Stop
MaxScorda 36:9ecb98d7c2cd 268 bool StopfuncOut()
MaxScorda 36:9ecb98d7c2cd 269 {
MaxScorda 41:fb612a3936fb 270 status=false;
MaxScorda 41:fb612a3936fb 271 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),11,p16,10,1);
MaxScorda 38:d88296cbb39c 272 term.formatPrintf("Stop\n",21,p51,8,1); //p51
MaxScorda 38:d88296cbb39c 273 term.formatPrintf("Stop H-Ard\n",61,p52,99,1); //p52
MaxScorda 36:9ecb98d7c2cd 274 ardser.printf("stop\r");
MaxScorda 36:9ecb98d7c2cd 275 printDisp(dispType,"Stop H-Ard\n\r");
MaxScorda 36:9ecb98d7c2cd 276 return 0;
MaxScorda 36:9ecb98d7c2cd 277 }
MaxScorda 36:9ecb98d7c2cd 278
MaxScorda 41:fb612a3936fb 279 //********************* Plus
MaxScorda 41:fb612a3936fb 280 bool plusOut(string func, string sstr)
MaxScorda 41:fb612a3936fb 281 {
MaxScorda 41:fb612a3936fb 282 //aumenta la funzione
MaxScorda 41:fb612a3936fb 283 bool errp=1;
MaxScorda 41:fb612a3936fb 284 string funcc;
MaxScorda 41:fb612a3936fb 285 funcc=sstr.substr(1,1);
MaxScorda 42:8ca8ff1ab387 286
MaxScorda 42:8ca8ff1ab387 287 term.formatPrintf("+\n",21,p51,8,1); //p51
MaxScorda 42:8ca8ff1ab387 288 term.formatPrintf("+\n",61,p52,99,1); //p52
MaxScorda 42:8ca8ff1ab387 289 ardser.printf("+\r");
MaxScorda 42:8ca8ff1ab387 290 printDisp(dispType,"Add Value\n\r");
MaxScorda 42:8ca8ff1ab387 291
MaxScorda 42:8ca8ff1ab387 292 errp=0;
MaxScorda 41:fb612a3936fb 293 return errp;
MaxScorda 41:fb612a3936fb 294 }
MaxScorda 41:fb612a3936fb 295
MaxScorda 41:fb612a3936fb 296 //********************* Minus
MaxScorda 41:fb612a3936fb 297 bool minusOut(string func, string sstr)
MaxScorda 41:fb612a3936fb 298 {
MaxScorda 41:fb612a3936fb 299 //aumenta la funzione
MaxScorda 41:fb612a3936fb 300 bool errp=1;
MaxScorda 41:fb612a3936fb 301 string funcc;
MaxScorda 41:fb612a3936fb 302 funcc=sstr.substr(1,1);
MaxScorda 42:8ca8ff1ab387 303
MaxScorda 42:8ca8ff1ab387 304 term.formatPrintf("-\n",21,p51,8,1); //p51
MaxScorda 42:8ca8ff1ab387 305 term.formatPrintf("-\n",61,p52,99,1); //p52
MaxScorda 42:8ca8ff1ab387 306 ardser.printf("-\r");
MaxScorda 42:8ca8ff1ab387 307 printDisp(dispType,"Sub Value\n\r");
MaxScorda 42:8ca8ff1ab387 308
MaxScorda 42:8ca8ff1ab387 309 errp=0;
MaxScorda 41:fb612a3936fb 310 return errp;
MaxScorda 41:fb612a3936fb 311 }
MaxScorda 36:9ecb98d7c2cd 312
MaxScorda 38:d88296cbb39c 313 /************************ IN Function *****************************/
MaxScorda 36:9ecb98d7c2cd 314 /******************************************************************/
MaxScorda 36:9ecb98d7c2cd 315 /******************************************************************/
MaxScorda 36:9ecb98d7c2cd 316
MaxScorda 36:9ecb98d7c2cd 317
MaxScorda 38:d88296cbb39c 318 //********************* Menu In
MaxScorda 38:d88296cbb39c 319 bool menuIn(string func, string sstr)
MaxScorda 36:9ecb98d7c2cd 320 {
MaxScorda 36:9ecb98d7c2cd 321 bool errp=1;
MaxScorda 39:0d7165083e7a 322 int funcn=0;
MaxScorda 39:0d7165083e7a 323 string funcc;
MaxScorda 39:0d7165083e7a 324 funcc=sstr.substr(3,1);
MaxScorda 39:0d7165083e7a 325
MaxScorda 39:0d7165083e7a 326 if ((funcc>="0") && (funcc<="9")) {
MaxScorda 38:d88296cbb39c 327 //trasformo in intero
MaxScorda 39:0d7165083e7a 328 funcn=atoi(fnzAdd.string2char(funcc));
MaxScorda 41:fb612a3936fb 329 menuidx=funcn;
MaxScorda 38:d88296cbb39c 330 //assegno menu al vettore
MaxScorda 39:0d7165083e7a 331 menu_main[funcn]=fnzAdd.addEOS(sstr.substr(3,20));
MaxScorda 39:0d7165083e7a 332 //*** tolti in attesa di regolare la sincronizzazione
MaxScorda 38:d88296cbb39c 333 //stampo in posizione
MaxScorda 39:0d7165083e7a 334 ///term.formatPrintf(fnzAdd.string2char(menu_main[funcn]),2,4+funcn,38);
MaxScorda 39:0d7165083e7a 335 //info terminale
MaxScorda 39:0d7165083e7a 336 ///term.formatPrintf("Menu Add \n",61,p52,99,1); //p52
MaxScorda 39:0d7165083e7a 337 //******
MaxScorda 38:d88296cbb39c 338 //display
MaxScorda 39:0d7165083e7a 339 printDisp(dispType,"Menu Add \n\r");
MaxScorda 38:d88296cbb39c 340 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+sstr.substr(0,3)+"\r")));
MaxScorda 40:48422add4537 341
MaxScorda 36:9ecb98d7c2cd 342 }
MaxScorda 39:0d7165083e7a 343 if (funcc=="9") {
MaxScorda 40:48422add4537 344 errp=0;
MaxScorda 39:0d7165083e7a 345 // writeLogInput( sstr); //solo al 9 stampo il log. Ha poi senso?
MaxScorda 39:0d7165083e7a 346 }
MaxScorda 36:9ecb98d7c2cd 347 return errp;
MaxScorda 36:9ecb98d7c2cd 348 }
MaxScorda 36:9ecb98d7c2cd 349
MaxScorda 38:d88296cbb39c 350 //********************* Function In
MaxScorda 38:d88296cbb39c 351 bool functionIn(string func, string sstr)
MaxScorda 36:9ecb98d7c2cd 352 {
MaxScorda 36:9ecb98d7c2cd 353 bool errp=1;
MaxScorda 39:0d7165083e7a 354 string funcc;
MaxScorda 39:0d7165083e7a 355 funcc=sstr.substr(3,1);
MaxScorda 39:0d7165083e7a 356 if (funcc!="Z") {
MaxScorda 38:d88296cbb39c 357 //assegno menu al vettore
MaxScorda 39:0d7165083e7a 358 menu_function[funccontidx]=fnzAdd.addEOS(sstr.substr(1,20));
MaxScorda 39:0d7165083e7a 359 //info terminale
MaxScorda 39:0d7165083e7a 360 term.formatPrintf("Function In \n",61,p52,99,1); //p52
MaxScorda 38:d88296cbb39c 361 //display
MaxScorda 38:d88296cbb39c 362 printDisp(dispType,"Function In \n\r");
MaxScorda 38:d88296cbb39c 363 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+sstr.substr(0,3)+"\r")));
MaxScorda 39:0d7165083e7a 364 funccontidx++; //incremento il contatore generale delle funzioni
MaxScorda 39:0d7165083e7a 365 } else {
MaxScorda 39:0d7165083e7a 366 menu_function[funccontidx]="Z.Z"; //carico lo stop
MaxScorda 39:0d7165083e7a 367 funccontidx=0; //azzero il contatore generale delle funzioni
MaxScorda 40:48422add4537 368 writeLogInput(sstr); //solo allo z stampo il log. Ha poi senso?
MaxScorda 39:0d7165083e7a 369 //set default video
MaxScorda 39:0d7165083e7a 370 choiceVideoSettings();
MaxScorda 40:48422add4537 371 errp=0;
MaxScorda 36:9ecb98d7c2cd 372 }
MaxScorda 36:9ecb98d7c2cd 373 return errp;
MaxScorda 36:9ecb98d7c2cd 374 }
MaxScorda 36:9ecb98d7c2cd 375
MaxScorda 41:fb612a3936fb 376 //********************** Parametri in ingresso
MaxScorda 41:fb612a3936fb 377 bool getParamIn(string func, string sstr)
MaxScorda 41:fb612a3936fb 378 {
MaxScorda 41:fb612a3936fb 379 //Sintassi: gpx
MaxScorda 41:fb612a3936fb 380 //G:costante
MaxScorda 41:fb612a3936fb 381 //P:0-menu 1-funzione 2-onoff 3-random
MaxScorda 41:fb612a3936fb 382 //X:valore
MaxScorda 41:fb612a3936fb 383 bool errp=1;
MaxScorda 41:fb612a3936fb 384 int ttype=atoi(fnzAdd.string2char(sstr.substr(1,1)));
MaxScorda 41:fb612a3936fb 385 switch (ttype) {
MaxScorda 41:fb612a3936fb 386 case 0: //menu
MaxScorda 41:fb612a3936fb 387 menuOut("m", "m"+sstr.substr(2,1));
MaxScorda 41:fb612a3936fb 388 break;
MaxScorda 41:fb612a3936fb 389 case 1: //function
MaxScorda 41:fb612a3936fb 390 funcOut("f", "f"+sstr.substr(2,1));
MaxScorda 41:fb612a3936fb 391 break;
MaxScorda 44:d8c12d28f3f2 392 case 2: //onoff
MaxScorda 41:fb612a3936fb 393 if (sstr.substr(2,1)=="1") StartfuncOut();
MaxScorda 41:fb612a3936fb 394 else StopfuncOut();
MaxScorda 41:fb612a3936fb 395 break;
MaxScorda 41:fb612a3936fb 396 case 3:
MaxScorda 41:fb612a3936fb 397 //////////// fare random!!!!
MaxScorda 41:fb612a3936fb 398 break;
MaxScorda 41:fb612a3936fb 399 }
MaxScorda 41:fb612a3936fb 400 errp=0;
MaxScorda 41:fb612a3936fb 401 return errp;
MaxScorda 41:fb612a3936fb 402 }
MaxScorda 41:fb612a3936fb 403
MaxScorda 41:fb612a3936fb 404 //********************* Start //!!!!!!!!!!da fare
MaxScorda 38:d88296cbb39c 405 bool StartfuncIn()
MaxScorda 38:d88296cbb39c 406 {
MaxScorda 38:d88296cbb39c 407 term.formatPrintf("*\n",26,p51,8,1); //p51
MaxScorda 38:d88296cbb39c 408 // term.formatPrintf("Start H-Ard\n",61,p52,99,1); //p52
MaxScorda 38:d88296cbb39c 409 // printDisp(dispType,"InStart H-Ard\n\r");
MaxScorda 38:d88296cbb39c 410 return 1;
MaxScorda 38:d88296cbb39c 411 }
MaxScorda 38:d88296cbb39c 412
MaxScorda 41:fb612a3936fb 413 //********************* Start //!!!!!!!!!!!!!!!!da fare
MaxScorda 38:d88296cbb39c 414 bool StopfuncIn()
MaxScorda 38:d88296cbb39c 415 {
MaxScorda 38:d88296cbb39c 416 term.formatPrintf("*\n",26,p51,8,1); //p51
MaxScorda 38:d88296cbb39c 417 // term.formatPrintf("Start H-Ard\n",61,p52,99,1); //p52
MaxScorda 38:d88296cbb39c 418 // printDisp(dispType,"InStop H-Ard\n\r");
MaxScorda 38:d88296cbb39c 419 return 1;
MaxScorda 38:d88296cbb39c 420 }
MaxScorda 38:d88296cbb39c 421
MaxScorda 40:48422add4537 422 //********************* Value Functions In
MaxScorda 40:48422add4537 423 bool valueIn(string sstr)
MaxScorda 40:48422add4537 424 {
MaxScorda 40:48422add4537 425 /* valore funzioni in ingresso
MaxScorda 40:48422add4537 426 Formato: viimftxxxx
MaxScorda 40:48422add4537 427 v-prefisso sempre v
MaxScorda 40:48422add4537 428 ii-indice
MaxScorda 40:48422add4537 429 m-menu
MaxScorda 40:48422add4537 430 f-funzione
MaxScorda 40:48422add4537 431 t-tipo n:min, x:max, s:step, v:valstart, a:valore attuale
MaxScorda 40:48422add4537 432 xxxx-valore
MaxScorda 40:48422add4537 433 */
MaxScorda 40:48422add4537 434 bool errp=1;
MaxScorda 41:fb612a3936fb 435 int vval=atoi(fnzAdd.string2char(sstr.substr(6,4)));
MaxScorda 40:48422add4537 436 int idx=atoi(fnzAdd.string2char(sstr.substr(1,2)));
MaxScorda 40:48422add4537 437 if (sstr.substr(0,1)=="v") {
MaxScorda 41:fb612a3936fb 438 if (idx!=99) { //se l'indice passato e' ignoto perche' e' un update, cercalo, se un primo giro crealo
MaxScorda 41:fb612a3936fb 439 function_val[idx][0]=atoi(fnzAdd.string2char(sstr.substr(3,1))); //MENU
MaxScorda 41:fb612a3936fb 440 function_val[idx][1]=atoi(fnzAdd.string2char(sstr.substr(4,1))); //FUNZIONE
MaxScorda 41:fb612a3936fb 441 } else {
MaxScorda 41:fb612a3936fb 442 //cerca valore. Per ora facciamo cosi, poi si vede se indicizzarlo
MaxScorda 41:fb612a3936fb 443 idx=trovaIndiceFunzione(sstr.substr(3,1)+"."+sstr.substr(4,1));
MaxScorda 41:fb612a3936fb 444 }
MaxScorda 40:48422add4537 445 function_val[idx][2+atoi(fnzAdd.string2char(sstr.substr(5,1)))] =vval; //tipo
MaxScorda 42:8ca8ff1ab387 446 if ((sstr.substr(5,1)=="4") || (status==true)) writeFunctionVal(sstr.substr(3,1)+"."+sstr.substr(4,1),0); //stampa solo il 4. da rivedere
MaxScorda 40:48422add4537 447 //errp=0;
MaxScorda 40:48422add4537 448 }
MaxScorda 40:48422add4537 449 return errp;
MaxScorda 40:48422add4537 450 }
MaxScorda 38:d88296cbb39c 451
MaxScorda 41:fb612a3936fb 452 //**************************************** altre
MaxScorda 40:48422add4537 453 int contaMenuFunc()
MaxScorda 40:48422add4537 454 {
MaxScorda 40:48422add4537 455 //funzione che conta le voci di menu in essere
MaxScorda 40:48422add4537 456 int ret=0;
MaxScorda 40:48422add4537 457 //conta gli elemnti del vecchio menu per la cancellazione. Si potrebbe usare una variabile globale ricordando il conteggio precedente ma cosi' non dovrebbe perdere troppo tempo
MaxScorda 40:48422add4537 458 while (menu_funcChoice[ret].substr(0,1)!="Z") {
MaxScorda 40:48422add4537 459 ret++;
MaxScorda 40:48422add4537 460 }
MaxScorda 40:48422add4537 461 if (ret>0) ret--; //per rirportare indietro il contatore
MaxScorda 40:48422add4537 462 return ret;
MaxScorda 36:9ecb98d7c2cd 463 }