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
Functions.h@39:0d7165083e7a, 2015-12-27 (annotated)
- Committer:
- MaxScorda
- Date:
- Sun Dec 27 23:15:53 2015 +0000
- Revision:
- 39:0d7165083e7a
- Parent:
- 38:d88296cbb39c
- Child:
- 40:48422add4537
Interfaccia statica ma funzionante
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MaxScorda | 7:f57abb3f0d3f | 1 | #include <string> |
MaxScorda | 7:f57abb3f0d3f | 2 | #include "IOFuncLib.h" |
MaxScorda | 36:9ecb98d7c2cd | 3 | #include "choiceFunctions.h" |
MaxScorda | 7:f57abb3f0d3f | 4 | |
MaxScorda | 38:d88296cbb39c | 5 | //Valori di Menu |
MaxScorda | 39:0d7165083e7a | 6 | int p16, p17; |
MaxScorda | 38:d88296cbb39c | 7 | int p01, p02, p03; |
MaxScorda | 38:d88296cbb39c | 8 | int p51, p52; |
MaxScorda | 37:befd2fe96ee3 | 9 | |
MaxScorda | 37:befd2fe96ee3 | 10 | void bannerAdv() |
MaxScorda | 37:befd2fe96ee3 | 11 | { |
MaxScorda | 37:befd2fe96ee3 | 12 | //spostato qui per lasciare in pace la libreria |
MaxScorda | 37:befd2fe96ee3 | 13 | term.reset(); |
MaxScorda | 37:befd2fe96ee3 | 14 | term.cls(); |
MaxScorda | 37:befd2fe96ee3 | 15 | term.frame(0, 0, 79, 22,1); |
MaxScorda | 37:befd2fe96ee3 | 16 | term.forgcol(3); |
MaxScorda | 37:befd2fe96ee3 | 17 | term.bold(); |
MaxScorda | 38:d88296cbb39c | 18 | term.formatPrintf("_____ H-Ard Synth Project Console _____\n",19,1); |
MaxScorda | 38:d88296cbb39c | 19 | term.formatPrintf("______ Nucleo Scorda IO Terminal ______\n",19,2); |
MaxScorda | 37:befd2fe96ee3 | 20 | |
MaxScorda | 37:befd2fe96ee3 | 21 | term.resetattrib(); |
MaxScorda | 37:befd2fe96ee3 | 22 | term.forgcol(7); |
MaxScorda | 37:befd2fe96ee3 | 23 | //3-4 |
MaxScorda | 37:befd2fe96ee3 | 24 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,3,1); //top 1/2 |
MaxScorda | 37:befd2fe96ee3 | 25 | term.forgcol(6); |
MaxScorda | 38:d88296cbb39c | 26 | /* |
MaxScorda | 38:d88296cbb39c | 27 | //5-6 |
MaxScorda | 37:befd2fe96ee3 | 28 | term.formatPrintf("Pattern 0......... \n",2,6); //p11 |
MaxScorda | 37:befd2fe96ee3 | 29 | term.formatPrintf("Pattern 1......... \n",42,6); //p12 |
MaxScorda | 38:d88296cbb39c | 30 | //7-8 |
MaxScorda | 39:0d7165083e7a | 31 | |
MaxScorda | 38:d88296cbb39c | 32 | //9-10 |
MaxScorda | 37:befd2fe96ee3 | 33 | term.formatPrintf("Serial Real(sro/f) \n",2,10); //p31 |
MaxScorda | 38:d88296cbb39c | 34 | //11-12 |
MaxScorda | 37:befd2fe96ee3 | 35 | term.formatPrintf("Note Pattern......\n",2,12,99); //p41 |
MaxScorda | 38:d88296cbb39c | 36 | */ |
MaxScorda | 39:0d7165083e7a | 37 | //16 |
MaxScorda | 39:0d7165083e7a | 38 | p16=16; |
MaxScorda | 39:0d7165083e7a | 39 | p17=16; |
MaxScorda | 39:0d7165083e7a | 40 | term.formatPrintf("Status \n",2,p16); //p16 |
MaxScorda | 39:0d7165083e7a | 41 | term.formatPrintf("Random \n",32,p17); //p17 |
MaxScorda | 38:d88296cbb39c | 42 | //18-19 |
MaxScorda | 38:d88296cbb39c | 43 | p51=18; |
MaxScorda | 38:d88296cbb39c | 44 | p52=18; |
MaxScorda | 38:d88296cbb39c | 45 | term.formatPrintf("Input string...... \n",2,p51); //p51 |
MaxScorda | 38:d88296cbb39c | 46 | term.formatPrintf("Command Type \n",48,p52); //p52 |
MaxScorda | 38:d88296cbb39c | 47 | p01=19; |
MaxScorda | 38:d88296cbb39c | 48 | p02=19; |
MaxScorda | 38:d88296cbb39c | 49 | p03=19; |
MaxScorda | 38:d88296cbb39c | 50 | term.formatPrintf("Funzione \n",2,p01); //p01 |
MaxScorda | 38:d88296cbb39c | 51 | term.formatPrintf("Numero \n",32,p02); //p02 |
MaxScorda | 38:d88296cbb39c | 52 | term.formatPrintf("Parametro \n",51,p03); //p03 |
MaxScorda | 38:d88296cbb39c | 53 | //21 |
MaxScorda | 37:befd2fe96ee3 | 54 | term.forgcol(7); |
MaxScorda | 37:befd2fe96ee3 | 55 | term.formatPrintf("Serial Feedback \n",2,21); |
MaxScorda | 37:befd2fe96ee3 | 56 | |
MaxScorda | 37:befd2fe96ee3 | 57 | |
MaxScorda | 37:befd2fe96ee3 | 58 | // grigino |
MaxScorda | 38:d88296cbb39c | 59 | /* |
MaxScorda | 39:0d7165083e7a | 60 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,5); //top 3/4 |
MaxScorda | 39:0d7165083e7a | 61 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,9); //top 7/8 |
MaxScorda | 39:0d7165083e7a | 62 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,13); //top 11/12 |
MaxScorda | 37:befd2fe96ee3 | 63 | |
MaxScorda | 39:0d7165083e7a | 64 | term.forgcol(2); |
MaxScorda | 39:0d7165083e7a | 65 | term.formatPrintf("Pattern: da 031 a 252 - Traccia 0-2, Note 3-6, Len 1-2 \n",2,16); //help |
MaxScorda | 39:0d7165083e7a | 66 | term.formatPrintf("Stato random: r1on-r1off \n",2,17); //help |
MaxScorda | 39:0d7165083e7a | 67 | term.formatPrintf("Cambia Note: da n01 a n53 - Nota 0-5, Val 1-3 \n",2,18); //help |
MaxScorda | 39:0d7165083e7a | 68 | term.formatPrintf("start, stop, dstop (delay) - rl: reload value\n",2,19); //help |
MaxScorda | 39:0d7165083e7a | 69 | term.forgcol(7); |
MaxScorda | 39:0d7165083e7a | 70 | */ |
MaxScorda | 39:0d7165083e7a | 71 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,15,1); //bottom pot |
MaxScorda | 38:d88296cbb39c | 72 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,17,1); //bottom pot |
MaxScorda | 38:d88296cbb39c | 73 | term.formatPrintf(fnzAdd.string2char(fnzAdd.padstr("\n",78,char(196))),1,20); //azzo funziona... |
MaxScorda | 37:befd2fe96ee3 | 74 | term.locate(0, 23); |
MaxScorda | 37:befd2fe96ee3 | 75 | printf("Command: > "); |
MaxScorda | 37:befd2fe96ee3 | 76 | |
MaxScorda | 37:befd2fe96ee3 | 77 | } |
MaxScorda | 37:befd2fe96ee3 | 78 | |
MaxScorda | 37:befd2fe96ee3 | 79 | |
MaxScorda | 7:f57abb3f0d3f | 80 | void callback() |
MaxScorda | 7:f57abb3f0d3f | 81 | { |
MaxScorda | 7:f57abb3f0d3f | 82 | // Note: you need to actually read from the serial to clear the RX interrupt |
MaxScorda | 7:f57abb3f0d3f | 83 | // ardser.printf("%d \n", cont++); |
MaxScorda | 7:f57abb3f0d3f | 84 | // myled2 = !myled2; |
MaxScorda | 7:f57abb3f0d3f | 85 | } |
MaxScorda | 7:f57abb3f0d3f | 86 | |
MaxScorda | 23:b7bd85345617 | 87 | void scsa() |
MaxScorda | 23:b7bd85345617 | 88 | { |
MaxScorda | 23:b7bd85345617 | 89 | //Funzione per screensaver |
MaxScorda | 23:b7bd85345617 | 90 | inverseDisp(dispType); |
MaxScorda | 23:b7bd85345617 | 91 | } |
MaxScorda | 7:f57abb3f0d3f | 92 | |
MaxScorda | 29:bfb815540de7 | 93 | |
MaxScorda | 29:bfb815540de7 | 94 | void parserVT100(char stringa[]) |
MaxScorda | 29:bfb815540de7 | 95 | { |
MaxScorda | 29:bfb815540de7 | 96 | string func; //funzione l=led |
MaxScorda | 29:bfb815540de7 | 97 | string funcnum; //funzione ordinata 1,2,3 ecc |
MaxScorda | 29:bfb815540de7 | 98 | string param; //parametro on, off |
MaxScorda | 29:bfb815540de7 | 99 | string strIn = string(stringa); |
MaxScorda | 29:bfb815540de7 | 100 | bool errp=1; |
MaxScorda | 29:bfb815540de7 | 101 | //pad a 4 |
MaxScorda | 29:bfb815540de7 | 102 | strIn=fnzAdd.padstr(strIn,5,' '); |
MaxScorda | 29:bfb815540de7 | 103 | strIn=fnzAdd.addEOS(strIn); |
MaxScorda | 29:bfb815540de7 | 104 | //split |
MaxScorda | 29:bfb815540de7 | 105 | func=strIn.substr(0,1); |
MaxScorda | 29:bfb815540de7 | 106 | funcnum=strIn.substr(1,1); |
MaxScorda | 29:bfb815540de7 | 107 | param=strIn.substr(2,3); |
MaxScorda | 29:bfb815540de7 | 108 | //write param |
MaxScorda | 38:d88296cbb39c | 109 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),11,p01,10,1); //p01 |
MaxScorda | 38:d88296cbb39c | 110 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),39,p02,10,1); //p02 |
MaxScorda | 38:d88296cbb39c | 111 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),61,p03,10,1); //p03 |
MaxScorda | 29:bfb815540de7 | 112 | //write input string |
MaxScorda | 38:d88296cbb39c | 113 | term.formatPrintf(fnzAdd.string2char(strIn),21,p51,10,1); //p51 |
MaxScorda | 29:bfb815540de7 | 114 | //term.formatPrintf(((char*)func.c_str() ,02,07); funziona anche cosi' |
MaxScorda | 29:bfb815540de7 | 115 | |
MaxScorda | 39:0d7165083e7a | 116 | //in arrivo e carica funzioni da Arduino |
MaxScorda | 38:d88296cbb39c | 117 | if (func=="f") { |
MaxScorda | 38:d88296cbb39c | 118 | errp=funcOut(func, funcnum,param, string(stringa)); |
MaxScorda | 36:9ecb98d7c2cd | 119 | } |
MaxScorda | 36:9ecb98d7c2cd | 120 | |
MaxScorda | 36:9ecb98d7c2cd | 121 | //led for test |
MaxScorda | 36:9ecb98d7c2cd | 122 | else if (func=="l") { |
MaxScorda | 36:9ecb98d7c2cd | 123 | errp=Lfunc(func, funcnum,param); |
MaxScorda | 36:9ecb98d7c2cd | 124 | } |
MaxScorda | 36:9ecb98d7c2cd | 125 | |
MaxScorda | 39:0d7165083e7a | 126 | //in arrivo e carica menu da Arduino |
MaxScorda | 38:d88296cbb39c | 127 | else if (func=="m") { |
MaxScorda | 38:d88296cbb39c | 128 | errp=menuOut(func, funcnum,param, string(stringa)); |
MaxScorda | 29:bfb815540de7 | 129 | } |
MaxScorda | 36:9ecb98d7c2cd | 130 | |
MaxScorda | 38:d88296cbb39c | 131 | //Random Activate DA FARE!!!!!!!!! |
MaxScorda | 38:d88296cbb39c | 132 | else if (func=="r") { |
MaxScorda | 38:d88296cbb39c | 133 | errp=RfuncOut(func, funcnum,param); |
MaxScorda | 36:9ecb98d7c2cd | 134 | } |
MaxScorda | 36:9ecb98d7c2cd | 135 | |
MaxScorda | 39:0d7165083e7a | 136 | //start DA FARE!!!!!!!!! |
MaxScorda | 36:9ecb98d7c2cd | 137 | else if (strIn.substr(0,5)=="start") { |
MaxScorda | 36:9ecb98d7c2cd | 138 | errp=StartfuncOut(); |
MaxScorda | 29:bfb815540de7 | 139 | } |
MaxScorda | 29:bfb815540de7 | 140 | |
MaxScorda | 39:0d7165083e7a | 141 | //stop DA FARE!!!!!!!!! |
MaxScorda | 36:9ecb98d7c2cd | 142 | else if (strIn.substr(0,4)=="stop") { |
MaxScorda | 36:9ecb98d7c2cd | 143 | errp=StopfuncOut(); |
MaxScorda | 36:9ecb98d7c2cd | 144 | } |
MaxScorda | 36:9ecb98d7c2cd | 145 | |
MaxScorda | 29:bfb815540de7 | 146 | // comando fuori parsing |
MaxScorda | 29:bfb815540de7 | 147 | if (errp==1) { |
MaxScorda | 32:b7859f48942a | 148 | term.forgcol(1); |
MaxScorda | 38:d88296cbb39c | 149 | term.formatPrintf("Bad Command\n",61,p52,99,1); //p52 |
MaxScorda | 32:b7859f48942a | 150 | term.forgcol(9); |
MaxScorda | 39:0d7165083e7a | 151 | ardser.printf("Bad command\n\r"); |
MaxScorda | 29:bfb815540de7 | 152 | printDisp(dispType,"** Bad command ** \n\r"); |
MaxScorda | 29:bfb815540de7 | 153 | } |
MaxScorda | 38:d88296cbb39c | 154 | |
MaxScorda | 29:bfb815540de7 | 155 | term.readypos(); |
MaxScorda | 29:bfb815540de7 | 156 | } |
MaxScorda | 29:bfb815540de7 | 157 | |
MaxScorda | 29:bfb815540de7 | 158 | |
MaxScorda | 28:f7a59cee5f0d | 159 | void writeInput(char stringa[]) |
MaxScorda | 28:f7a59cee5f0d | 160 | { |
MaxScorda | 36:9ecb98d7c2cd | 161 | string func; //funzione l=led |
MaxScorda | 36:9ecb98d7c2cd | 162 | string funcnum; //funzione ordinata 1,2,3 ecc |
MaxScorda | 36:9ecb98d7c2cd | 163 | string param; //parametro on, off |
MaxScorda | 28:f7a59cee5f0d | 164 | string strIn = string(stringa); |
MaxScorda | 36:9ecb98d7c2cd | 165 | bool errp=1; |
MaxScorda | 38:d88296cbb39c | 166 | strIn=fnzAdd.padstr(strIn,5,' '); //non dovrebbe servire |
MaxScorda | 28:f7a59cee5f0d | 167 | strIn=fnzAdd.addEOS(strIn); |
MaxScorda | 36:9ecb98d7c2cd | 168 | //split |
MaxScorda | 36:9ecb98d7c2cd | 169 | func=strIn.substr(0,1); |
MaxScorda | 36:9ecb98d7c2cd | 170 | funcnum=strIn.substr(1,1); |
MaxScorda | 36:9ecb98d7c2cd | 171 | param=strIn.substr(2,3); |
MaxScorda | 36:9ecb98d7c2cd | 172 | |
MaxScorda | 39:0d7165083e7a | 173 | |
MaxScorda | 38:d88296cbb39c | 174 | //Descrizione Menu in input |
MaxScorda | 38:d88296cbb39c | 175 | if (func=="m") { |
MaxScorda | 38:d88296cbb39c | 176 | errp=menuIn(func, stringa); |
MaxScorda | 36:9ecb98d7c2cd | 177 | } |
MaxScorda | 38:d88296cbb39c | 178 | //Descrizione funzione in input |
MaxScorda | 38:d88296cbb39c | 179 | else if (func=="f") { |
MaxScorda | 38:d88296cbb39c | 180 | errp=functionIn(func, stringa); |
MaxScorda | 36:9ecb98d7c2cd | 181 | } |
MaxScorda | 36:9ecb98d7c2cd | 182 | //start |
MaxScorda | 36:9ecb98d7c2cd | 183 | else if (strIn.substr(0,4)=="start") { |
MaxScorda | 36:9ecb98d7c2cd | 184 | errp=StartfuncIn(); |
MaxScorda | 36:9ecb98d7c2cd | 185 | } |
MaxScorda | 36:9ecb98d7c2cd | 186 | //stop |
MaxScorda | 36:9ecb98d7c2cd | 187 | else if (strIn.substr(0,3)=="stop") { |
MaxScorda | 36:9ecb98d7c2cd | 188 | errp=StopfuncIn(); |
MaxScorda | 36:9ecb98d7c2cd | 189 | } |
MaxScorda | 36:9ecb98d7c2cd | 190 | |
MaxScorda | 39:0d7165083e7a | 191 | //writeLogInput( strIn{ |
MaxScorda | 36:9ecb98d7c2cd | 192 | term.formatPrintf(fnzAdd.string2char(">"+fnzAdd.subEOS(string(stringa))+"<"),18,21,99,1); |
MaxScorda | 36:9ecb98d7c2cd | 193 | term.readypos(); |
MaxScorda | 36:9ecb98d7c2cd | 194 | } |
MaxScorda | 36:9ecb98d7c2cd | 195 | |
MaxScorda | 36:9ecb98d7c2cd | 196 | void preloadValue() |
MaxScorda | 36:9ecb98d7c2cd | 197 | { |
MaxScorda | 36:9ecb98d7c2cd | 198 | string func; //funzione l=led |
MaxScorda | 36:9ecb98d7c2cd | 199 | string funcnum; //funzione ordinata 1,2,3 ecc |
MaxScorda | 36:9ecb98d7c2cd | 200 | string param; //parametro on, off |
MaxScorda | 36:9ecb98d7c2cd | 201 | string strIn; |
MaxScorda | 36:9ecb98d7c2cd | 202 | |
MaxScorda | 38:d88296cbb39c | 203 | //azzero vettori |
MaxScorda | 38:d88296cbb39c | 204 | for (int i = 0; i < 10; i++) { |
MaxScorda | 38:d88296cbb39c | 205 | menu_main[i]=""; |
MaxScorda | 38:d88296cbb39c | 206 | menu_funcChoice[i]=""; |
MaxScorda | 38:d88296cbb39c | 207 | } |
MaxScorda | 38:d88296cbb39c | 208 | for (int i = 0; i < 100; i++) { |
MaxScorda | 38:d88296cbb39c | 209 | menu_function[i]=""; |
MaxScorda | 38:d88296cbb39c | 210 | } |
MaxScorda | 39:0d7165083e7a | 211 | menu_main[0]="Z.Z"; //invero e' sbagliato. controllare cosa usa di stop |
MaxScorda | 39:0d7165083e7a | 212 | menu_funcChoice[0]="Z.Z"; |
MaxScorda | 39:0d7165083e7a | 213 | menu_function[0]="Z.Z"; |
MaxScorda | 38:d88296cbb39c | 214 | |
MaxScorda | 39:0d7165083e7a | 215 | status=false; //accensione |
MaxScorda | 39:0d7165083e7a | 216 | randomActivate=true; |
MaxScorda | 39:0d7165083e7a | 217 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),11,p16,10,1); |
MaxScorda | 39:0d7165083e7a | 218 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("True")),39,p17,10,1); |
MaxScorda | 39:0d7165083e7a | 219 | |
MaxScorda | 29:bfb815540de7 | 220 | term.readypos(); |
MaxScorda | 29:bfb815540de7 | 221 | } |
MaxScorda | 28:f7a59cee5f0d | 222 | |
MaxScorda | 7:f57abb3f0d3f | 223 | |
MaxScorda | 36:9ecb98d7c2cd | 224 | |
MaxScorda | 7:f57abb3f0d3f | 225 | void pressed() |
MaxScorda | 7:f57abb3f0d3f | 226 | { |
MaxScorda | 39:0d7165083e7a | 227 | term.erasesquare(1, 4, 78, 14); |
MaxScorda | 36:9ecb98d7c2cd | 228 | ardser.printf("rl\r"); |
MaxScorda | 38:d88296cbb39c | 229 | term.formatPrintf("rl\n",21,p51,8,1); //p51 |
MaxScorda | 38:d88296cbb39c | 230 | term.formatPrintf("Ask for reload\n",61,p52,99,1); //p52 |
MaxScorda | 36:9ecb98d7c2cd | 231 | led.flash(2); |
MaxScorda | 35:e9e9d518c354 | 232 | } |
MaxScorda | 7:f57abb3f0d3f | 233 | |
MaxScorda | 7:f57abb3f0d3f | 234 | |
MaxScorda | 8:3f1d8c55b3a0 | 235 | |
MaxScorda | 9:9ad85b6bd9cf | 236 |