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@45:58713cc78010, 2019-12-12 (annotated)
- Committer:
- MaxScorda
- Date:
- Thu Dec 12 20:58:45 2019 +0000
- Revision:
- 45:58713cc78010
- Parent:
- 42:8ca8ff1ab387
Info
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 | 40:48422add4537 | 118 | errp=funcOut(func, 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 | 40:48422add4537 | 128 | errp=menuOut(func,string(stringa)); |
MaxScorda | 29:bfb815540de7 | 129 | } |
MaxScorda | 36:9ecb98d7c2cd | 130 | |
MaxScorda | 42:8ca8ff1ab387 | 131 | //Random Activate |
MaxScorda | 38:d88296cbb39c | 132 | else if (func=="r") { |
MaxScorda | 42:8ca8ff1ab387 | 133 | errp=RfuncOut(func, strIn); |
MaxScorda | 42:8ca8ff1ab387 | 134 | } |
MaxScorda | 42:8ca8ff1ab387 | 135 | |
MaxScorda | 42:8ca8ff1ab387 | 136 | //Random Activate |
MaxScorda | 42:8ca8ff1ab387 | 137 | else if (strIn.substr(0,2)=="so"){ |
MaxScorda | 42:8ca8ff1ab387 | 138 | errp=sensorOut(func, strIn); |
MaxScorda | 36:9ecb98d7c2cd | 139 | } |
MaxScorda | 36:9ecb98d7c2cd | 140 | |
MaxScorda | 41:fb612a3936fb | 141 | //start |
MaxScorda | 36:9ecb98d7c2cd | 142 | else if (strIn.substr(0,5)=="start") { |
MaxScorda | 36:9ecb98d7c2cd | 143 | errp=StartfuncOut(); |
MaxScorda | 29:bfb815540de7 | 144 | } |
MaxScorda | 29:bfb815540de7 | 145 | |
MaxScorda | 41:fb612a3936fb | 146 | //stop |
MaxScorda | 36:9ecb98d7c2cd | 147 | else if (strIn.substr(0,4)=="stop") { |
MaxScorda | 36:9ecb98d7c2cd | 148 | errp=StopfuncOut(); |
MaxScorda | 36:9ecb98d7c2cd | 149 | } |
MaxScorda | 36:9ecb98d7c2cd | 150 | |
MaxScorda | 41:fb612a3936fb | 151 | else if (func=="+") { |
MaxScorda | 41:fb612a3936fb | 152 | errp=plusOut(func,string(stringa)); |
MaxScorda | 41:fb612a3936fb | 153 | } |
MaxScorda | 41:fb612a3936fb | 154 | |
MaxScorda | 41:fb612a3936fb | 155 | else if (func=="-") { |
MaxScorda | 41:fb612a3936fb | 156 | errp=minusOut(func,string(stringa)); |
MaxScorda | 41:fb612a3936fb | 157 | } |
MaxScorda | 41:fb612a3936fb | 158 | |
MaxScorda | 29:bfb815540de7 | 159 | // comando fuori parsing |
MaxScorda | 29:bfb815540de7 | 160 | if (errp==1) { |
MaxScorda | 32:b7859f48942a | 161 | term.forgcol(1); |
MaxScorda | 38:d88296cbb39c | 162 | term.formatPrintf("Bad Command\n",61,p52,99,1); //p52 |
MaxScorda | 32:b7859f48942a | 163 | term.forgcol(9); |
MaxScorda | 39:0d7165083e7a | 164 | ardser.printf("Bad command\n\r"); |
MaxScorda | 29:bfb815540de7 | 165 | printDisp(dispType,"** Bad command ** \n\r"); |
MaxScorda | 29:bfb815540de7 | 166 | } |
MaxScorda | 41:fb612a3936fb | 167 | if (errp==0) term.readypos(); //riposiziono solo solo se a 0 |
MaxScorda | 29:bfb815540de7 | 168 | } |
MaxScorda | 29:bfb815540de7 | 169 | |
MaxScorda | 29:bfb815540de7 | 170 | |
MaxScorda | 28:f7a59cee5f0d | 171 | void writeInput(char stringa[]) |
MaxScorda | 28:f7a59cee5f0d | 172 | { |
MaxScorda | 36:9ecb98d7c2cd | 173 | string func; //funzione l=led |
MaxScorda | 36:9ecb98d7c2cd | 174 | string funcnum; //funzione ordinata 1,2,3 ecc |
MaxScorda | 36:9ecb98d7c2cd | 175 | string param; //parametro on, off |
MaxScorda | 28:f7a59cee5f0d | 176 | string strIn = string(stringa); |
MaxScorda | 36:9ecb98d7c2cd | 177 | bool errp=1; |
MaxScorda | 38:d88296cbb39c | 178 | strIn=fnzAdd.padstr(strIn,5,' '); //non dovrebbe servire |
MaxScorda | 28:f7a59cee5f0d | 179 | strIn=fnzAdd.addEOS(strIn); |
MaxScorda | 36:9ecb98d7c2cd | 180 | //split |
MaxScorda | 36:9ecb98d7c2cd | 181 | func=strIn.substr(0,1); |
MaxScorda | 36:9ecb98d7c2cd | 182 | funcnum=strIn.substr(1,1); |
MaxScorda | 36:9ecb98d7c2cd | 183 | param=strIn.substr(2,3); |
MaxScorda | 36:9ecb98d7c2cd | 184 | |
MaxScorda | 39:0d7165083e7a | 185 | |
MaxScorda | 38:d88296cbb39c | 186 | //Descrizione Menu in input |
MaxScorda | 38:d88296cbb39c | 187 | if (func=="m") { |
MaxScorda | 38:d88296cbb39c | 188 | errp=menuIn(func, stringa); |
MaxScorda | 36:9ecb98d7c2cd | 189 | } |
MaxScorda | 38:d88296cbb39c | 190 | //Descrizione funzione in input |
MaxScorda | 38:d88296cbb39c | 191 | else if (func=="f") { |
MaxScorda | 38:d88296cbb39c | 192 | errp=functionIn(func, stringa); |
MaxScorda | 36:9ecb98d7c2cd | 193 | } |
MaxScorda | 41:fb612a3936fb | 194 | //Parametri in ingresso |
MaxScorda | 41:fb612a3936fb | 195 | else if (func=="g") { |
MaxScorda | 41:fb612a3936fb | 196 | errp=getParamIn(func, stringa); |
MaxScorda | 41:fb612a3936fb | 197 | } |
MaxScorda | 36:9ecb98d7c2cd | 198 | //start |
MaxScorda | 36:9ecb98d7c2cd | 199 | else if (strIn.substr(0,4)=="start") { |
MaxScorda | 36:9ecb98d7c2cd | 200 | errp=StartfuncIn(); |
MaxScorda | 36:9ecb98d7c2cd | 201 | } |
MaxScorda | 36:9ecb98d7c2cd | 202 | //stop |
MaxScorda | 36:9ecb98d7c2cd | 203 | else if (strIn.substr(0,3)=="stop") { |
MaxScorda | 36:9ecb98d7c2cd | 204 | errp=StopfuncIn(); |
MaxScorda | 36:9ecb98d7c2cd | 205 | } |
MaxScorda | 40:48422add4537 | 206 | //Valori funzione in input |
MaxScorda | 40:48422add4537 | 207 | else if (func=="v") { |
MaxScorda | 41:fb612a3936fb | 208 | errp=valueIn(stringa); |
MaxScorda | 40:48422add4537 | 209 | } |
MaxScorda | 36:9ecb98d7c2cd | 210 | |
MaxScorda | 39:0d7165083e7a | 211 | //writeLogInput( strIn{ |
MaxScorda | 36:9ecb98d7c2cd | 212 | term.formatPrintf(fnzAdd.string2char(">"+fnzAdd.subEOS(string(stringa))+"<"),18,21,99,1); |
MaxScorda | 40:48422add4537 | 213 | if (errp==0) term.readypos(); |
MaxScorda | 36:9ecb98d7c2cd | 214 | } |
MaxScorda | 36:9ecb98d7c2cd | 215 | |
MaxScorda | 36:9ecb98d7c2cd | 216 | void preloadValue() |
MaxScorda | 36:9ecb98d7c2cd | 217 | { |
MaxScorda | 36:9ecb98d7c2cd | 218 | string func; //funzione l=led |
MaxScorda | 36:9ecb98d7c2cd | 219 | string funcnum; //funzione ordinata 1,2,3 ecc |
MaxScorda | 36:9ecb98d7c2cd | 220 | string param; //parametro on, off |
MaxScorda | 36:9ecb98d7c2cd | 221 | string strIn; |
MaxScorda | 36:9ecb98d7c2cd | 222 | |
MaxScorda | 38:d88296cbb39c | 223 | //azzero vettori |
MaxScorda | 38:d88296cbb39c | 224 | for (int i = 0; i < 10; i++) { |
MaxScorda | 38:d88296cbb39c | 225 | menu_main[i]=""; |
MaxScorda | 38:d88296cbb39c | 226 | menu_funcChoice[i]=""; |
MaxScorda | 38:d88296cbb39c | 227 | } |
MaxScorda | 40:48422add4537 | 228 | for (int i = 0; i < 50; i++) { |
MaxScorda | 38:d88296cbb39c | 229 | menu_function[i]=""; |
MaxScorda | 38:d88296cbb39c | 230 | } |
MaxScorda | 39:0d7165083e7a | 231 | menu_main[0]="Z.Z"; //invero e' sbagliato. controllare cosa usa di stop |
MaxScorda | 39:0d7165083e7a | 232 | menu_funcChoice[0]="Z.Z"; |
MaxScorda | 39:0d7165083e7a | 233 | menu_function[0]="Z.Z"; |
MaxScorda | 38:d88296cbb39c | 234 | |
MaxScorda | 39:0d7165083e7a | 235 | status=false; //accensione |
MaxScorda | 41:fb612a3936fb | 236 | randomActivate=false; |
MaxScorda | 39:0d7165083e7a | 237 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),11,p16,10,1); |
MaxScorda | 42:8ca8ff1ab387 | 238 | term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS("Off")),39,p17,10,1); |
MaxScorda | 39:0d7165083e7a | 239 | |
MaxScorda | 29:bfb815540de7 | 240 | term.readypos(); |
MaxScorda | 29:bfb815540de7 | 241 | } |
MaxScorda | 28:f7a59cee5f0d | 242 | |
MaxScorda | 7:f57abb3f0d3f | 243 | |
MaxScorda | 36:9ecb98d7c2cd | 244 | |
MaxScorda | 7:f57abb3f0d3f | 245 | void pressed() |
MaxScorda | 7:f57abb3f0d3f | 246 | { |
MaxScorda | 39:0d7165083e7a | 247 | term.erasesquare(1, 4, 78, 14); |
MaxScorda | 36:9ecb98d7c2cd | 248 | ardser.printf("rl\r"); |
MaxScorda | 38:d88296cbb39c | 249 | term.formatPrintf("rl\n",21,p51,8,1); //p51 |
MaxScorda | 38:d88296cbb39c | 250 | term.formatPrintf("Ask for reload\n",61,p52,99,1); //p52 |
MaxScorda | 36:9ecb98d7c2cd | 251 | led.flash(2); |
MaxScorda | 35:e9e9d518c354 | 252 | } |
MaxScorda | 7:f57abb3f0d3f | 253 | |
MaxScorda | 7:f57abb3f0d3f | 254 | |
MaxScorda | 8:3f1d8c55b3a0 | 255 | |
MaxScorda | 9:9ad85b6bd9cf | 256 |