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 24 01:38:56 2015 +0000
Revision:
38:d88296cbb39c
Parent:
37:befd2fe96ee3
Child:
39:0d7165083e7a
Sistemazione Output, pre passaggio dati

Who changed what in which revision?

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