Console Serial IO con display OLED e seriale asincrona
Dependencies: mbed BufferedSerial AserialIOFuncLib SSD1306 TerminalPlusV2
Fork of SerialIO by
Console Serial IO con display OLED e seriale asincrona
Diff: choiceFunctions.h
- Revision:
- 39:0d7165083e7a
- Parent:
- 38:d88296cbb39c
- Child:
- 40:48422add4537
--- a/choiceFunctions.h Thu Dec 24 01:38:56 2015 +0000 +++ b/choiceFunctions.h Sun Dec 27 23:15:53 2015 +0000 @@ -1,3 +1,50 @@ +// istanze di funzioni per metterle poi dove si vuole +bool funcfromMenu(int); +//------------------------------------------------- + +void choiceVideoSettings() +{ + string prefix; + //stampo menu + menuidx=3; + for (int i = 0; i<10 ; i++) { + if (i==menuidx) { + term.bold(); + prefix="*"; + } else { + term.resetattrib(); + //term.forgcol(7); + prefix=" "; + } + term.formatPrintf(fnzAdd.string2char(prefix+menu_main[i]),1,4+i,19); + } + //info terminale + term.formatPrintf("Menu Add \n",61,p52,19,1); //p52 + //setto asterisco + // term.formatPrintf("*",1,4+menuidx,1); + //setto funzioni e scelta + funcfromMenu(menuidx); +} + +void writeLogInput(string strIn) +{ + // stampa i splitta i parametri in ingesso + //write param + string func; + string funcnum; + string param; + func=strIn.substr(0,1); + funcnum=strIn.substr(1,1); + param=strIn.substr(2,3); + term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),11,p01,10,1); //p01 + term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),39,p02,10,1); //p02 + term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),61,p03,10,1); //p03 + //write input string + term.formatPrintf(fnzAdd.string2char(strIn.substr(0,17)),21,p51,10,1); //p51 +//--------------------------------------------------------------------------------------------- +} + + bool funcOut(string func, string funcnum, string param, string sstr) { //fare @@ -17,18 +64,6 @@ } return errp; } -//********************* Init: chiama Arduino al boot e chiama i paramtri -bool initFunc(string func, string funcnum, string param) -{ - bool errp=1; - - if (funcnum=="1") { - // errp=menuIn("0", param); - - } - return errp; -} - //********************* Led bool Lfunc(string func, string funcnum, string param) @@ -38,14 +73,14 @@ if (funcnum=="1") { if (param=="on ") { term.formatPrintf("Led ACCESO \n",61,p52,99,1); //p52 - if (realExtraSerial==false) ardser.printf("\nLed ACCESO \n\r"); + ardser.printf("\nLed ACCESO \n\r"); printDisp(dispType,"Led ACCESO \n\r"); led.onOff(1); //Accende il led errp=0; } if (param=="off") { term.formatPrintf("Led SPENTO! \n",61,p52,99,1); //p52 - if (realExtraSerial==false) ardser.printf("\nLed SPENTO! \n\r"); + ardser.printf("\nLed SPENTO! \n\r"); printDisp(dispType,"Led SPENTO \n\r"); led.onOff(0); //Spegne il led errp=0; @@ -57,38 +92,39 @@ //********************** cambio menu -bool funcfromMenu(string func, string funcnum, string param, string sstr) +bool funcfromMenu(int funcnum) { // funzione di load funzioni da menu scelto bool errp=1; - char funcc; - char tempm; - int ccmenu=0; - int ccfun=0; + int tempm; + int ccmenu=0; //indice vettore funzioni selezionate + int ccfun=0; //indice vettore funzione principale string funzionen; - funcc=*fnzAdd.string2char(fnzAdd.addEOS(funcnum)); - //filtro vettore funzioni in base la menu - do { + funzionen=menu_function[ccmenu]; + while ((funzionen.substr(0,1)!="Z") && (ccmenu<=99)) { // confronto il primo carattere dell vettore funzioni col primo carattere del menu - funzionen=menu_function[ccmenu]; - tempm=*fnzAdd.string2char(funzionen.substr(0,1)); + tempm=atoi(fnzAdd.string2char(funzionen.substr(0,1))); // se = metto il valore del vettore funzioni nel vettore funzioni scelte - if (tempm==funcc) { + if (menuidx==tempm) { menu_funcChoice[ccfun]=menu_function[ccmenu]; ccfun++; } ccmenu++; - } while ((ccmenu<10) && (funcc!='z')) ; + funzionen=menu_function[ccmenu]; //assegna la stringa del menu + } + menu_funcChoice[ccfun]="Z.Z"; //setto lo stop + if (ccfun>0) { //non dovrebbe avvenire diversamente perche' 1 ci deve esere ma e' da trappare + //azzero da dove sono in giu' + for (int i = funcidx+1; i <ccfun ; i++) { + term.formatPrintf("*",42,4+i,38); + } + //scrico dalla prima allo scelto + for (int i = 0; i <ccfun ; i++) { + term.formatPrintf(fnzAdd.string2char(menu_funcChoice[i]),42,4+i,38); + } + } funcidx=0; - //azzero da dove sono in giu' - for (int i = fnzAdd.c2i(funcc)+1; i <=funcidx ; i++) { - term.formatPrintf("\n",42,4+i,38); - } - //scrico dalla prima allo scelto - for (int i = 0; i <=fnzAdd.c2i(funcc) ; i++) { - term.formatPrintf(fnzAdd.string2char(menu_funcChoice[i]),42,4+i,38); - } errp=0; //per ora non fa nulla, vedere se tenere a uso futuro return errp; } @@ -106,8 +142,8 @@ menuidx= fnzAdd.c2i(funcc); term.formatPrintf("*\n",2,4+menuidx,1); printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS("Menu "+funcnum+"\r"))); - //chiama la cernita delle funzioni - errp=funcfromMenu(func, funcnum, param, sstr); //ritorna sempre 0 (e va bene cosi) + //chiama la cernita delle funzioni + errp=funcfromMenu(menuidx); //ritorna sempre 0 (e va bene cosi) } return errp; } @@ -168,22 +204,29 @@ bool menuIn(string func, string sstr) { bool errp=1; - int funcn; - // char funcc=fnzAdd.string2char(sstr.substr(2,1)); - char funcc; - funcc=*fnzAdd.string2char(fnzAdd.addEOS(sstr.substr(2,1))); - if (funcc!='z') { + int funcn=0; + string funcc; + funcc=sstr.substr(3,1); + + if ((funcc>="0") && (funcc<="9")) { //trasformo in intero - funcn=fnzAdd.c2i(funcc); + funcn=atoi(fnzAdd.string2char(funcc)); //assegno menu al vettore - menu_main[funcn]=fnzAdd.addEOS(sstr); + menu_main[funcn]=fnzAdd.addEOS(sstr.substr(3,20)); + //*** tolti in attesa di regolare la sincronizzazione //stampo in posizione - term.formatPrintf(fnzAdd.string2char(menu_main[funcn]),2,4+funcn,38); + ///term.formatPrintf(fnzAdd.string2char(menu_main[funcn]),2,4+funcn,38); + //info terminale + ///term.formatPrintf("Menu Add \n",61,p52,99,1); //p52 + //****** //display - printDisp(dispType,"Menu In \n\r"); + printDisp(dispType,"Menu Add \n\r"); printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+sstr.substr(0,3)+"\r"))); errp=0; } + if (funcc=="9") { + // writeLogInput( sstr); //solo al 9 stampo il log. Ha poi senso? + } return errp; } @@ -191,18 +234,26 @@ bool functionIn(string func, string sstr) { bool errp=1; - int funcn; - char funcc= *fnzAdd.string2char(sstr.substr(2,1)); - - if (funcc!='z') { - //trasformo in intero - funcn=fnzAdd.c2i(funcc); + string funcc; + funcc=sstr.substr(3,1); + if (funcc!="Z") { //assegno menu al vettore - menu_function[funcn]=fnzAdd.addEOS(sstr.substr(2,1)); //??? sicuri? + menu_function[funccontidx]=fnzAdd.addEOS(sstr.substr(1,20)); + //stampo in posizione + //term.formatPrintf(fnzAdd.string2char( menu_function[funccontidx]),42,4+(funccontidx%20),38); + //info terminale + term.formatPrintf("Function In \n",61,p52,99,1); //p52 //display printDisp(dispType,"Function In \n\r"); printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+sstr.substr(0,3)+"\r"))); + funccontidx++; //incremento il contatore generale delle funzioni errp=0; + } else { + menu_function[funccontidx]="Z.Z"; //carico lo stop + funccontidx=0; //azzero il contatore generale delle funzioni + writeLogInput( sstr); //solo allo z stampo il log. Ha poi senso? + //set default video + choiceVideoSettings(); } return errp; } @@ -226,7 +277,7 @@ } -//********************* Synth Note +//********************* ????????????????????????????? bool NfuncIn(string func, string funcnum, string param, char* arr) { bool errp=1;