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@36:9ecb98d7c2cd, 2015-11-06 (annotated)
- 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?
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 | 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 |