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:
Fri Nov 06 20:15:54 2015 +0000
Revision:
36:9ecb98d7c2cd
Parent:
35:e9e9d518c354
Child:
37:befd2fe96ee3
Final release. Waiting for some adds

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 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 35:e9e9d518c354 34 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),11,4,10,1); //p01
MaxScorda 35:e9e9d518c354 35 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),39,4,10,1); //p02
MaxScorda 35:e9e9d518c354 36 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),61,4,10,1); //p03
MaxScorda 29:bfb815540de7 37 //write input string
MaxScorda 35:e9e9d518c354 38 term.formatPrintf(fnzAdd.string2char(strIn),21,14,10,1); //p51
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 36:9ecb98d7c2cd 42 if ((func=="s") && (funcnum=="r") ) {
MaxScorda 36:9ecb98d7c2cd 43 errp=Sfunc(func, funcnum,param);
MaxScorda 36:9ecb98d7c2cd 44 }
MaxScorda 36:9ecb98d7c2cd 45
MaxScorda 36:9ecb98d7c2cd 46 //Random Activate
MaxScorda 36:9ecb98d7c2cd 47 else if (func=="r") {
MaxScorda 36:9ecb98d7c2cd 48 errp=RfuncOut(func, funcnum,param);
MaxScorda 36:9ecb98d7c2cd 49 }
MaxScorda 36:9ecb98d7c2cd 50
MaxScorda 36:9ecb98d7c2cd 51 //led for test
MaxScorda 36:9ecb98d7c2cd 52 else if (func=="l") {
MaxScorda 36:9ecb98d7c2cd 53 errp=Lfunc(func, funcnum,param);
MaxScorda 36:9ecb98d7c2cd 54 }
MaxScorda 36:9ecb98d7c2cd 55
MaxScorda 36:9ecb98d7c2cd 56 //command SYNTH Tracce
MaxScorda 36:9ecb98d7c2cd 57 else if ((func>="0") && (func<="9")) {
MaxScorda 36:9ecb98d7c2cd 58 errp=s09funcOut(func, funcnum,param,stringa[0]);
MaxScorda 29:bfb815540de7 59 }
MaxScorda 36:9ecb98d7c2cd 60
MaxScorda 36:9ecb98d7c2cd 61 //command SYNTH Note
MaxScorda 36:9ecb98d7c2cd 62 else if (func=="n") {
MaxScorda 36:9ecb98d7c2cd 63 errp=NfuncOut(func, funcnum,param, stringa);
MaxScorda 36:9ecb98d7c2cd 64 }
MaxScorda 36:9ecb98d7c2cd 65
MaxScorda 36:9ecb98d7c2cd 66 //start
MaxScorda 36:9ecb98d7c2cd 67 else if (strIn.substr(0,5)=="start") {
MaxScorda 36:9ecb98d7c2cd 68 errp=StartfuncOut();
MaxScorda 29:bfb815540de7 69 }
MaxScorda 29:bfb815540de7 70
MaxScorda 36:9ecb98d7c2cd 71 //stop
MaxScorda 36:9ecb98d7c2cd 72 else if (strIn.substr(0,4)=="stop") {
MaxScorda 36:9ecb98d7c2cd 73 errp=StopfuncOut();
MaxScorda 36:9ecb98d7c2cd 74 }
MaxScorda 36:9ecb98d7c2cd 75
MaxScorda 36:9ecb98d7c2cd 76 //delay stop
MaxScorda 36:9ecb98d7c2cd 77 else if (strIn.substr(0,5)=="dstop") {
MaxScorda 36:9ecb98d7c2cd 78 errp=DelayStopfuncOut();
MaxScorda 36:9ecb98d7c2cd 79 }
MaxScorda 36:9ecb98d7c2cd 80
MaxScorda 36:9ecb98d7c2cd 81
MaxScorda 29:bfb815540de7 82 // comando fuori parsing
MaxScorda 29:bfb815540de7 83 if (errp==1) {
MaxScorda 32:b7859f48942a 84 term.forgcol(1);
MaxScorda 36:9ecb98d7c2cd 85 term.formatPrintf("Bad Command\n",61,14,99,1); //p52
MaxScorda 32:b7859f48942a 86 term.forgcol(9);
MaxScorda 29:bfb815540de7 87 if (realExtraSerial==false) ardser.printf("Bad command\n\r");
MaxScorda 29:bfb815540de7 88 printDisp(dispType,"** Bad command ** \n\r");
MaxScorda 29:bfb815540de7 89 }
MaxScorda 36:9ecb98d7c2cd 90
MaxScorda 29:bfb815540de7 91 term.readypos();
MaxScorda 29:bfb815540de7 92 }
MaxScorda 29:bfb815540de7 93
MaxScorda 29:bfb815540de7 94
MaxScorda 28:f7a59cee5f0d 95 void writeInput(char stringa[])
MaxScorda 28:f7a59cee5f0d 96 {
MaxScorda 36:9ecb98d7c2cd 97 string func; //funzione l=led
MaxScorda 36:9ecb98d7c2cd 98 string funcnum; //funzione ordinata 1,2,3 ecc
MaxScorda 36:9ecb98d7c2cd 99 string param; //parametro on, off
MaxScorda 28:f7a59cee5f0d 100 string strIn = string(stringa);
MaxScorda 36:9ecb98d7c2cd 101 bool errp=1;
MaxScorda 36:9ecb98d7c2cd 102 //pad a 4
MaxScorda 36:9ecb98d7c2cd 103 strIn=fnzAdd.padstr(strIn,5,' ');
MaxScorda 28:f7a59cee5f0d 104 strIn=fnzAdd.addEOS(strIn);
MaxScorda 36:9ecb98d7c2cd 105 //split
MaxScorda 36:9ecb98d7c2cd 106 func=strIn.substr(0,1);
MaxScorda 36:9ecb98d7c2cd 107 funcnum=strIn.substr(1,1);
MaxScorda 36:9ecb98d7c2cd 108 param=strIn.substr(2,3);
MaxScorda 36:9ecb98d7c2cd 109
MaxScorda 36:9ecb98d7c2cd 110 //Random Activate
MaxScorda 36:9ecb98d7c2cd 111 if (func=="r") {
MaxScorda 36:9ecb98d7c2cd 112 errp=RfuncIn(func, funcnum,param);
MaxScorda 36:9ecb98d7c2cd 113 }
MaxScorda 36:9ecb98d7c2cd 114 //command SYNTH Tracce
MaxScorda 36:9ecb98d7c2cd 115 else if ((func>="0") && (func<="9")) {
MaxScorda 36:9ecb98d7c2cd 116 errp=s09funcIn(func, funcnum,param,stringa[0]);
MaxScorda 36:9ecb98d7c2cd 117 //ardser.printf(strIn+" \n\r");
MaxScorda 36:9ecb98d7c2cd 118 }
MaxScorda 36:9ecb98d7c2cd 119 //command SYNTH Note
MaxScorda 36:9ecb98d7c2cd 120 else if (func=="n") {
MaxScorda 36:9ecb98d7c2cd 121 errp=NfuncIn(func, funcnum,param, stringa);
MaxScorda 36:9ecb98d7c2cd 122 }
MaxScorda 36:9ecb98d7c2cd 123 //start
MaxScorda 36:9ecb98d7c2cd 124 else if (strIn.substr(0,4)=="start") {
MaxScorda 36:9ecb98d7c2cd 125 errp=StartfuncIn();
MaxScorda 36:9ecb98d7c2cd 126 }
MaxScorda 36:9ecb98d7c2cd 127 //stop
MaxScorda 36:9ecb98d7c2cd 128 else if (strIn.substr(0,3)=="stop") {
MaxScorda 36:9ecb98d7c2cd 129 errp=StopfuncIn();
MaxScorda 36:9ecb98d7c2cd 130 }
MaxScorda 36:9ecb98d7c2cd 131
MaxScorda 36:9ecb98d7c2cd 132 //delay stop
MaxScorda 36:9ecb98d7c2cd 133 else if (strIn.substr(0,4)=="dstop") {
MaxScorda 36:9ecb98d7c2cd 134 errp=DelayStopfuncIn();
MaxScorda 36:9ecb98d7c2cd 135 }
MaxScorda 36:9ecb98d7c2cd 136
MaxScorda 36:9ecb98d7c2cd 137 //Boot
MaxScorda 36:9ecb98d7c2cd 138 else if (strIn.substr(0,4)=="boot") {
MaxScorda 36:9ecb98d7c2cd 139 errp=bootfuncIn();
MaxScorda 36:9ecb98d7c2cd 140 }
MaxScorda 36:9ecb98d7c2cd 141
MaxScorda 36:9ecb98d7c2cd 142 term.formatPrintf(fnzAdd.string2char(">"+fnzAdd.subEOS(string(stringa))+"<"),18,21,99,1);
MaxScorda 36:9ecb98d7c2cd 143 term.readypos();
MaxScorda 36:9ecb98d7c2cd 144 }
MaxScorda 36:9ecb98d7c2cd 145
MaxScorda 36:9ecb98d7c2cd 146 void preloadValue()
MaxScorda 36:9ecb98d7c2cd 147 {
MaxScorda 36:9ecb98d7c2cd 148 string func; //funzione l=led
MaxScorda 36:9ecb98d7c2cd 149 string funcnum; //funzione ordinata 1,2,3 ecc
MaxScorda 36:9ecb98d7c2cd 150 string param; //parametro on, off
MaxScorda 36:9ecb98d7c2cd 151 string strIn;
MaxScorda 36:9ecb98d7c2cd 152
MaxScorda 36:9ecb98d7c2cd 153 //pattern
MaxScorda 36:9ecb98d7c2cd 154 for (int i = 0; i < 3; i++) {
MaxScorda 36:9ecb98d7c2cd 155 strIn=fnzAdd.i2s(i)+"-"+fnzAdd.i2s(i+3)+"-"+fnzAdd.i2s(2);
MaxScorda 36:9ecb98d7c2cd 156 term.formatPrintf(fnzAdd.string2char(strIn),21+(i%2)*40,6+(2*(i/2)),8,1); //p11 //p12 //p21
MaxScorda 36:9ecb98d7c2cd 157 }
MaxScorda 36:9ecb98d7c2cd 158 //real serial
MaxScorda 36:9ecb98d7c2cd 159 term.formatPrintf("OFF\n",21,10,3,1); //p31
MaxScorda 36:9ecb98d7c2cd 160 //random
MaxScorda 36:9ecb98d7c2cd 161 term.formatPrintf("ON\n",61,8,99,1); //p22
MaxScorda 36:9ecb98d7c2cd 162 // note
MaxScorda 36:9ecb98d7c2cd 163 term.formatPrintf("60 64 67 71 74 77\n",21,12,99,1); //p41
MaxScorda 29:bfb815540de7 164 term.readypos();
MaxScorda 29:bfb815540de7 165 }
MaxScorda 28:f7a59cee5f0d 166
MaxScorda 7:f57abb3f0d3f 167
MaxScorda 36:9ecb98d7c2cd 168
MaxScorda 7:f57abb3f0d3f 169 void pressed()
MaxScorda 7:f57abb3f0d3f 170 {
MaxScorda 36:9ecb98d7c2cd 171 ardser.printf("rl\r");
MaxScorda 36:9ecb98d7c2cd 172 term.formatPrintf("rl\n",21,14,8,1); //p51
MaxScorda 36:9ecb98d7c2cd 173 term.formatPrintf("Ask for reload\n",61,14,99,1); //p52
MaxScorda 36:9ecb98d7c2cd 174 led.flash(2);
MaxScorda 35:e9e9d518c354 175 }
MaxScorda 7:f57abb3f0d3f 176
MaxScorda 7:f57abb3f0d3f 177
MaxScorda 8:3f1d8c55b3a0 178
MaxScorda 9:9ad85b6bd9cf 179