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:
Sat Jan 09 00:53:41 2016 +0000
Revision:
41:fb612a3936fb
Parent:
40:48422add4537
Child:
42:8ca8ff1ab387
Inizio +-

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