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:
Mon Sep 14 21:33:42 2015 +0000
Revision:
29:bfb815540de7
Parent:
28:f7a59cee5f0d
Child:
31:abff828992d7
VT100: fase1

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 7:f57abb3f0d3f 3 genFunctions fnzAdd; //messa qui rende la raccolta funzioni indipendente
MaxScorda 7:f57abb3f0d3f 4
MaxScorda 7:f57abb3f0d3f 5 void callback()
MaxScorda 7:f57abb3f0d3f 6 {
MaxScorda 7:f57abb3f0d3f 7 // Note: you need to actually read from the serial to clear the RX interrupt
MaxScorda 7:f57abb3f0d3f 8 // ardser.printf("%d \n", cont++);
MaxScorda 7:f57abb3f0d3f 9 // myled2 = !myled2;
MaxScorda 7:f57abb3f0d3f 10 }
MaxScorda 7:f57abb3f0d3f 11
MaxScorda 23:b7bd85345617 12 void scsa()
MaxScorda 23:b7bd85345617 13 {
MaxScorda 23:b7bd85345617 14 //Funzione per screensaver
MaxScorda 23:b7bd85345617 15 inverseDisp(dispType);
MaxScorda 23:b7bd85345617 16 }
MaxScorda 7:f57abb3f0d3f 17
MaxScorda 29:bfb815540de7 18
MaxScorda 29:bfb815540de7 19 void parserVT100(char stringa[])
MaxScorda 29:bfb815540de7 20 {
MaxScorda 29:bfb815540de7 21 string func; //funzione l=led
MaxScorda 29:bfb815540de7 22 string funcnum; //funzione ordinata 1,2,3 ecc
MaxScorda 29:bfb815540de7 23 string param; //parametro on, off
MaxScorda 29:bfb815540de7 24 string strIn = string(stringa);
MaxScorda 29:bfb815540de7 25 bool errp=1;
MaxScorda 29:bfb815540de7 26 //pad a 4
MaxScorda 29:bfb815540de7 27 strIn=fnzAdd.padstr(strIn,5,' ');
MaxScorda 29:bfb815540de7 28 strIn=fnzAdd.addEOS(strIn);
MaxScorda 29:bfb815540de7 29 //split
MaxScorda 29:bfb815540de7 30 func=strIn.substr(0,1);
MaxScorda 29:bfb815540de7 31 funcnum=strIn.substr(1,1);
MaxScorda 29:bfb815540de7 32 param=strIn.substr(2,3);
MaxScorda 29:bfb815540de7 33 //write param
MaxScorda 29:bfb815540de7 34 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),2,8,15);
MaxScorda 29:bfb815540de7 35 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),22,8,15);
MaxScorda 29:bfb815540de7 36 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),42,8,15);
MaxScorda 29:bfb815540de7 37 //write input string
MaxScorda 29:bfb815540de7 38 term.formatPrintf(fnzAdd.string2char(strIn),2,16,20);
MaxScorda 29:bfb815540de7 39 //term.formatPrintf(((char*)func.c_str() ,02,07); funziona anche cosi'
MaxScorda 29:bfb815540de7 40
MaxScorda 29:bfb815540de7 41 //extra serial output (output reale su arduino default true)
MaxScorda 29:bfb815540de7 42 if (func=="s") {
MaxScorda 29:bfb815540de7 43 if (funcnum=="r") {
MaxScorda 29:bfb815540de7 44 if (param=="on ") {
MaxScorda 29:bfb815540de7 45 realExtraSerial=true;
MaxScorda 29:bfb815540de7 46 term.formatPrintf("ON \n",62,13,3);
MaxScorda 29:bfb815540de7 47 errp=0;
MaxScorda 29:bfb815540de7 48 }
MaxScorda 29:bfb815540de7 49 if (param=="off") {
MaxScorda 29:bfb815540de7 50 realExtraSerial=false;
MaxScorda 29:bfb815540de7 51 term.formatPrintf("OFF\n",62,13);
MaxScorda 29:bfb815540de7 52 errp=0;
MaxScorda 29:bfb815540de7 53 }
MaxScorda 29:bfb815540de7 54 }
MaxScorda 29:bfb815540de7 55 }
MaxScorda 29:bfb815540de7 56
MaxScorda 29:bfb815540de7 57 //led
MaxScorda 29:bfb815540de7 58 if (func=="l") {
MaxScorda 29:bfb815540de7 59 if (funcnum=="1") {
MaxScorda 29:bfb815540de7 60 if (param=="on ") {
MaxScorda 29:bfb815540de7 61 term.formatPrintf("ON \n",2,13,3);
MaxScorda 29:bfb815540de7 62 term.formatPrintf("Led ACCESO \n",42,16,99);
MaxScorda 29:bfb815540de7 63 if (realExtraSerial==false) ardser.printf("\nLed ACCESO \n\r");
MaxScorda 29:bfb815540de7 64 printDisp(dispType,"Led ACCESO \n\r");
MaxScorda 29:bfb815540de7 65 led.onOff(1); //Accende il led
MaxScorda 29:bfb815540de7 66 errp=0;
MaxScorda 29:bfb815540de7 67 }
MaxScorda 29:bfb815540de7 68 if (param=="off") {
MaxScorda 29:bfb815540de7 69 term.formatPrintf("OFF \n",2,13);
MaxScorda 29:bfb815540de7 70 term.formatPrintf("Led SPENTO! \n",42,16,99);
MaxScorda 29:bfb815540de7 71 if (realExtraSerial==false) ardser.printf("\nLed SPENTO! \n\r");
MaxScorda 29:bfb815540de7 72 printDisp(dispType,"Led SPENTO \n\r");
MaxScorda 29:bfb815540de7 73 led.onOff(0); //Spegne il led
MaxScorda 29:bfb815540de7 74 errp=0;
MaxScorda 29:bfb815540de7 75 }
MaxScorda 29:bfb815540de7 76 }
MaxScorda 29:bfb815540de7 77 }
MaxScorda 29:bfb815540de7 78 //virtual
MaxScorda 29:bfb815540de7 79 if (func=="v") {
MaxScorda 29:bfb815540de7 80 if (funcnum=="1") {
MaxScorda 29:bfb815540de7 81 if (param=="on ") {
MaxScorda 29:bfb815540de7 82 term.formatPrintf("ON \n",22,13);
MaxScorda 29:bfb815540de7 83 term.formatPrintf("Virtual ACCESO \n",42,16,99);
MaxScorda 29:bfb815540de7 84 if (realExtraSerial==false) ardser.printf("Virtual On\r");
MaxScorda 29:bfb815540de7 85 printDisp(dispType,"Virtual ACCESO \n\r");
MaxScorda 29:bfb815540de7 86 errp=0;
MaxScorda 29:bfb815540de7 87 }
MaxScorda 29:bfb815540de7 88 if (param=="off") {
MaxScorda 29:bfb815540de7 89 term.formatPrintf("OFF \n",22,13);
MaxScorda 29:bfb815540de7 90 term.formatPrintf("Virtual SPENTO! \n",42,16,99);
MaxScorda 29:bfb815540de7 91 if (realExtraSerial==false) ardser.printf("Virtual Off\r");
MaxScorda 29:bfb815540de7 92 printDisp(dispType,"Virtual SPENTO \n\r");
MaxScorda 29:bfb815540de7 93 errp=0;
MaxScorda 29:bfb815540de7 94 }
MaxScorda 29:bfb815540de7 95 }
MaxScorda 29:bfb815540de7 96 }
MaxScorda 29:bfb815540de7 97
MaxScorda 29:bfb815540de7 98 //command SYNTH
MaxScorda 29:bfb815540de7 99 if ((func>="0") && (func<="9")) {
MaxScorda 29:bfb815540de7 100 if ((funcnum>="0") && (funcnum<="9")) {
MaxScorda 29:bfb815540de7 101 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)),42,13,4);
MaxScorda 29:bfb815540de7 102 term.formatPrintf("Arduino Command \n",42,16,99);
MaxScorda 29:bfb815540de7 103 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+funcnum+param+"\r")));
MaxScorda 29:bfb815540de7 104 printDisp(dispType,"Arduino Command \n\r");
MaxScorda 29:bfb815540de7 105 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+func+funcnum+param+"\r")));
MaxScorda 29:bfb815540de7 106 //ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)));
MaxScorda 29:bfb815540de7 107 errp=0;
MaxScorda 29:bfb815540de7 108 }
MaxScorda 29:bfb815540de7 109 }
MaxScorda 29:bfb815540de7 110
MaxScorda 29:bfb815540de7 111 // comando fuori parsing
MaxScorda 29:bfb815540de7 112 if (errp==1) {
MaxScorda 29:bfb815540de7 113 // pc.printf("Bad command\n\r");
MaxScorda 29:bfb815540de7 114 term.formatPrintf("Bad Command\n",42,16,99);
MaxScorda 29:bfb815540de7 115 if (realExtraSerial==false) ardser.printf("Bad command\n\r");
MaxScorda 29:bfb815540de7 116 printDisp(dispType,"** Bad command ** \n\r");
MaxScorda 29:bfb815540de7 117 }
MaxScorda 29:bfb815540de7 118 term.readypos();
MaxScorda 29:bfb815540de7 119 }
MaxScorda 29:bfb815540de7 120
MaxScorda 29:bfb815540de7 121
MaxScorda 7:f57abb3f0d3f 122 void parser(char stringa[])
MaxScorda 7:f57abb3f0d3f 123 {
MaxScorda 7:f57abb3f0d3f 124 string func; //funzione l=led
MaxScorda 7:f57abb3f0d3f 125 string funcnum; //funzione ordinata 1,2,3 ecc
MaxScorda 7:f57abb3f0d3f 126 string param; //parametro on, off
MaxScorda 7:f57abb3f0d3f 127 string strIn = string(stringa);
MaxScorda 8:3f1d8c55b3a0 128 bool errp=1;
MaxScorda 8:3f1d8c55b3a0 129 //pad a 4
MaxScorda 8:3f1d8c55b3a0 130 strIn=fnzAdd.padstr(strIn,5,' ');
MaxScorda 7:f57abb3f0d3f 131 strIn=fnzAdd.addEOS(strIn);
MaxScorda 8:3f1d8c55b3a0 132 //split
MaxScorda 7:f57abb3f0d3f 133 func=strIn.substr(0,1);
MaxScorda 7:f57abb3f0d3f 134 funcnum=strIn.substr(1,1);
MaxScorda 8:3f1d8c55b3a0 135 param=strIn.substr(2,3);
MaxScorda 8:3f1d8c55b3a0 136 //write param
MaxScorda 29:bfb815540de7 137 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),2,8,15);
MaxScorda 29:bfb815540de7 138 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),22,8,15);
MaxScorda 29:bfb815540de7 139 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),42,8,15);
MaxScorda 8:3f1d8c55b3a0 140 //write input string
MaxScorda 29:bfb815540de7 141 term.formatPrintf(fnzAdd.string2char(strIn),2,16,20);
MaxScorda 29:bfb815540de7 142 //term.formatPrintf((char*)func.c_str() ,02,07); funziona anche cosi'
MaxScorda 7:f57abb3f0d3f 143
MaxScorda 20:fc0a3050c5d1 144 //extra serial output (output reale su arduino default true)
MaxScorda 20:fc0a3050c5d1 145 if (func=="s") {
MaxScorda 20:fc0a3050c5d1 146 if (funcnum=="r") {
MaxScorda 20:fc0a3050c5d1 147 if (param=="on ") {
MaxScorda 20:fc0a3050c5d1 148 realExtraSerial=true;
MaxScorda 29:bfb815540de7 149 term.formatPrintf("ON \n",62,13,3);
MaxScorda 21:a867c9454f21 150 errp=0;
MaxScorda 20:fc0a3050c5d1 151 }
MaxScorda 20:fc0a3050c5d1 152 if (param=="off") {
MaxScorda 20:fc0a3050c5d1 153 realExtraSerial=false;
MaxScorda 29:bfb815540de7 154 term.formatPrintf("OFF\n",62,13);
MaxScorda 21:a867c9454f21 155 errp=0;
MaxScorda 20:fc0a3050c5d1 156 }
MaxScorda 20:fc0a3050c5d1 157 }
MaxScorda 20:fc0a3050c5d1 158 }
MaxScorda 20:fc0a3050c5d1 159
MaxScorda 13:92303a41947a 160 //led
MaxScorda 8:3f1d8c55b3a0 161 if (func=="l") {
MaxScorda 8:3f1d8c55b3a0 162 if (funcnum=="1") {
MaxScorda 8:3f1d8c55b3a0 163 if (param=="on ") {
MaxScorda 29:bfb815540de7 164 term.formatPrintf("ON \n",2,13,3);
MaxScorda 29:bfb815540de7 165 term.formatPrintf("Led ACCESO \n",42,16,99);
MaxScorda 22:96199b7addb9 166 if (realExtraSerial==false) ardser.printf("\nLed ACCESO \n\r");
MaxScorda 15:7d756492af23 167 printDisp(dispType,"Led ACCESO \n\r");
MaxScorda 21:a867c9454f21 168 led.onOff(1); //Accende il led
MaxScorda 8:3f1d8c55b3a0 169 errp=0;
MaxScorda 8:3f1d8c55b3a0 170 }
MaxScorda 8:3f1d8c55b3a0 171 if (param=="off") {
MaxScorda 29:bfb815540de7 172 term.formatPrintf("OFF \n",2,13);
MaxScorda 29:bfb815540de7 173 term.formatPrintf("Led SPENTO! \n",42,16,99);
MaxScorda 23:b7bd85345617 174 if (realExtraSerial==false) ardser.printf("\nLed SPENTO! \n\r");
MaxScorda 15:7d756492af23 175 printDisp(dispType,"Led SPENTO \n\r");
MaxScorda 21:a867c9454f21 176 led.onOff(0); //Spegne il led
MaxScorda 8:3f1d8c55b3a0 177 errp=0;
MaxScorda 8:3f1d8c55b3a0 178 }
MaxScorda 8:3f1d8c55b3a0 179 }
MaxScorda 7:f57abb3f0d3f 180 }
MaxScorda 8:3f1d8c55b3a0 181 //virtual
MaxScorda 8:3f1d8c55b3a0 182 if (func=="v") {
MaxScorda 8:3f1d8c55b3a0 183 if (funcnum=="1") {
MaxScorda 8:3f1d8c55b3a0 184 if (param=="on ") {
MaxScorda 29:bfb815540de7 185 term.formatPrintf("ON \n",22,13);
MaxScorda 29:bfb815540de7 186 term.formatPrintf("Virtual ACCESO \n",42,16,99);
MaxScorda 28:f7a59cee5f0d 187 if (realExtraSerial==false) ardser.printf("Virtual On\r");
MaxScorda 17:7c8c37fbec9f 188 printDisp(dispType,"Virtual ACCESO \n\r");
MaxScorda 8:3f1d8c55b3a0 189 errp=0;
MaxScorda 8:3f1d8c55b3a0 190 }
MaxScorda 8:3f1d8c55b3a0 191 if (param=="off") {
MaxScorda 29:bfb815540de7 192 term.formatPrintf("OFF \n",22,13);
MaxScorda 29:bfb815540de7 193 term.formatPrintf("Virtual SPENTO! \n",42,16,99);
MaxScorda 28:f7a59cee5f0d 194 if (realExtraSerial==false) ardser.printf("Virtual Off\r");
MaxScorda 17:7c8c37fbec9f 195 printDisp(dispType,"Virtual SPENTO \n\r");
MaxScorda 8:3f1d8c55b3a0 196 errp=0;
MaxScorda 8:3f1d8c55b3a0 197 }
MaxScorda 8:3f1d8c55b3a0 198 }
MaxScorda 7:f57abb3f0d3f 199 }
MaxScorda 13:92303a41947a 200
MaxScorda 9:9ad85b6bd9cf 201 //command SYNTH
MaxScorda 20:fc0a3050c5d1 202 if ((func>="0") && (func<="9")) {
MaxScorda 20:fc0a3050c5d1 203 if ((funcnum>="0") && (funcnum<="9")) {
MaxScorda 29:bfb815540de7 204 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)),42,13,4);
MaxScorda 29:bfb815540de7 205 term.formatPrintf("Arduino Command \n",42,16,99);
MaxScorda 20:fc0a3050c5d1 206 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+funcnum+param+"\r")));
MaxScorda 17:7c8c37fbec9f 207 printDisp(dispType,"Arduino Command \n\r");
MaxScorda 17:7c8c37fbec9f 208 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+func+funcnum+param+"\r")));
MaxScorda 9:9ad85b6bd9cf 209 //ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)));
MaxScorda 9:9ad85b6bd9cf 210 errp=0;
MaxScorda 9:9ad85b6bd9cf 211 }
MaxScorda 13:92303a41947a 212 }
MaxScorda 8:3f1d8c55b3a0 213
MaxScorda 8:3f1d8c55b3a0 214 // comando fuori parsing
MaxScorda 7:f57abb3f0d3f 215 if (errp==1) {
MaxScorda 7:f57abb3f0d3f 216 // pc.printf("Bad command\n\r");
MaxScorda 29:bfb815540de7 217 term.formatPrintf("Bad Command\n",42,16,99);
MaxScorda 28:f7a59cee5f0d 218 if (realExtraSerial==false) ardser.printf("Bad command\n\r");
MaxScorda 17:7c8c37fbec9f 219 printDisp(dispType,"** Bad command ** \n\r");
MaxScorda 7:f57abb3f0d3f 220 }
MaxScorda 29:bfb815540de7 221 term.readypos();
MaxScorda 7:f57abb3f0d3f 222 }
MaxScorda 7:f57abb3f0d3f 223
MaxScorda 28:f7a59cee5f0d 224 void writeInput(char stringa[])
MaxScorda 28:f7a59cee5f0d 225 {
MaxScorda 28:f7a59cee5f0d 226 string strIn = string(stringa);
MaxScorda 28:f7a59cee5f0d 227 strIn=fnzAdd.addEOS(strIn);
MaxScorda 28:f7a59cee5f0d 228 //ardser.printf(strIn+" \n\r");
MaxScorda 29:bfb815540de7 229 term.formatPrintf(fnzAdd.string2char(strIn),2,20,20);
MaxScorda 29:bfb815540de7 230 term.readypos();
MaxScorda 29:bfb815540de7 231 }
MaxScorda 28:f7a59cee5f0d 232
MaxScorda 7:f57abb3f0d3f 233
MaxScorda 7:f57abb3f0d3f 234 void pressed()
MaxScorda 7:f57abb3f0d3f 235 {
MaxScorda 7:f57abb3f0d3f 236 //vedere come rimediare
MaxScorda 7:f57abb3f0d3f 237 sc.pressed();
MaxScorda 7:f57abb3f0d3f 238 }
MaxScorda 7:f57abb3f0d3f 239
MaxScorda 7:f57abb3f0d3f 240
MaxScorda 8:3f1d8c55b3a0 241
MaxScorda 9:9ad85b6bd9cf 242