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:
Wed Sep 23 00:04:55 2015 +0000
Revision:
32:b7859f48942a
Parent:
31:abff828992d7
Child:
33:19d1d8bc5891
Corretto formato input da seriale e layout; Resta ancrora latenza

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 31:abff828992d7 34 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func)),11,4,10);
MaxScorda 31:abff828992d7 35 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),39,4,10);
MaxScorda 31:abff828992d7 36 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(param)),61,4,10);
MaxScorda 29:bfb815540de7 37 //write input string
MaxScorda 31:abff828992d7 38 term.formatPrintf(fnzAdd.string2char(strIn),21,10,10);
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 32:b7859f48942a 42 if (func=="r") {
MaxScorda 32:b7859f48942a 43 if (funcnum=="s") {
MaxScorda 29:bfb815540de7 44 if (param=="on ") {
MaxScorda 29:bfb815540de7 45 realExtraSerial=true;
MaxScorda 32:b7859f48942a 46 term.formatPrintf("ON \n",62,8,3);
MaxScorda 32:b7859f48942a 47 term.formatPrintf("SR Attiva \n",61,10,99);
MaxScorda 32:b7859f48942a 48 printDisp(dispType,"SR Attiva \n\r");
MaxScorda 29:bfb815540de7 49 errp=0;
MaxScorda 29:bfb815540de7 50 }
MaxScorda 29:bfb815540de7 51 if (param=="off") {
MaxScorda 29:bfb815540de7 52 realExtraSerial=false;
MaxScorda 32:b7859f48942a 53 term.formatPrintf("OFF\n",8,13);
MaxScorda 32:b7859f48942a 54 term.formatPrintf("SR Disattivata \n",61,10,99);
MaxScorda 32:b7859f48942a 55 if (realExtraSerial==false) ardser.printf("\nSR OFF \n\r");
MaxScorda 32:b7859f48942a 56 printDisp(dispType,"SR Disattivata \n\r");
MaxScorda 29:bfb815540de7 57 errp=0;
MaxScorda 29:bfb815540de7 58 }
MaxScorda 29:bfb815540de7 59 }
MaxScorda 29:bfb815540de7 60 }
MaxScorda 29:bfb815540de7 61
MaxScorda 29:bfb815540de7 62 //led
MaxScorda 29:bfb815540de7 63 if (func=="l") {
MaxScorda 29:bfb815540de7 64 if (funcnum=="1") {
MaxScorda 29:bfb815540de7 65 if (param=="on ") {
MaxScorda 31:abff828992d7 66 term.formatPrintf("ON \n",21,6,3);
MaxScorda 32:b7859f48942a 67 term.formatPrintf("Led ACCESO \n",61,10,99);
MaxScorda 29:bfb815540de7 68 if (realExtraSerial==false) ardser.printf("\nLed ACCESO \n\r");
MaxScorda 29:bfb815540de7 69 printDisp(dispType,"Led ACCESO \n\r");
MaxScorda 29:bfb815540de7 70 led.onOff(1); //Accende il led
MaxScorda 29:bfb815540de7 71 errp=0;
MaxScorda 29:bfb815540de7 72 }
MaxScorda 29:bfb815540de7 73 if (param=="off") {
MaxScorda 31:abff828992d7 74 term.formatPrintf("OFF \n",21,6,3);
MaxScorda 32:b7859f48942a 75 term.formatPrintf("Led SPENTO! \n",61,10,99);
MaxScorda 29:bfb815540de7 76 if (realExtraSerial==false) ardser.printf("\nLed SPENTO! \n\r");
MaxScorda 29:bfb815540de7 77 printDisp(dispType,"Led SPENTO \n\r");
MaxScorda 29:bfb815540de7 78 led.onOff(0); //Spegne il led
MaxScorda 29:bfb815540de7 79 errp=0;
MaxScorda 29:bfb815540de7 80 }
MaxScorda 29:bfb815540de7 81 }
MaxScorda 29:bfb815540de7 82 }
MaxScorda 29:bfb815540de7 83 //virtual
MaxScorda 29:bfb815540de7 84 if (func=="v") {
MaxScorda 29:bfb815540de7 85 if (funcnum=="1") {
MaxScorda 29:bfb815540de7 86 if (param=="on ") {
MaxScorda 32:b7859f48942a 87 term.formatPrintf("ON \n",61,6,3);
MaxScorda 32:b7859f48942a 88 term.formatPrintf("Virtual ACCESO \n",61,10,99);
MaxScorda 29:bfb815540de7 89 if (realExtraSerial==false) ardser.printf("Virtual On\r");
MaxScorda 29:bfb815540de7 90 printDisp(dispType,"Virtual ACCESO \n\r");
MaxScorda 29:bfb815540de7 91 errp=0;
MaxScorda 29:bfb815540de7 92 }
MaxScorda 29:bfb815540de7 93 if (param=="off") {
MaxScorda 32:b7859f48942a 94 term.formatPrintf("OFF \n",61,6);
MaxScorda 32:b7859f48942a 95 term.formatPrintf("Virtual SPENTO! \n",61,10,99);
MaxScorda 29:bfb815540de7 96 if (realExtraSerial==false) ardser.printf("Virtual Off\r");
MaxScorda 29:bfb815540de7 97 printDisp(dispType,"Virtual SPENTO \n\r");
MaxScorda 29:bfb815540de7 98 errp=0;
MaxScorda 29:bfb815540de7 99 }
MaxScorda 29:bfb815540de7 100 }
MaxScorda 29:bfb815540de7 101 }
MaxScorda 29:bfb815540de7 102
MaxScorda 29:bfb815540de7 103 //command SYNTH
MaxScorda 32:b7859f48942a 104 if (((func>="0") && (func<="9")) || (func=="n")) {
MaxScorda 29:bfb815540de7 105 if ((funcnum>="0") && (funcnum<="9")) {
MaxScorda 32:b7859f48942a 106 term.formatPrintf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)),61,10,4);
MaxScorda 32:b7859f48942a 107 term.formatPrintf("Arduino Command \n",21,8,5);
MaxScorda 29:bfb815540de7 108 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+funcnum+param+"\r")));
MaxScorda 29:bfb815540de7 109 printDisp(dispType,"Arduino Command \n\r");
MaxScorda 29:bfb815540de7 110 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+func+funcnum+param+"\r")));
MaxScorda 29:bfb815540de7 111 //ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)));
MaxScorda 29:bfb815540de7 112 errp=0;
MaxScorda 29:bfb815540de7 113 }
MaxScorda 29:bfb815540de7 114 }
MaxScorda 29:bfb815540de7 115
MaxScorda 29:bfb815540de7 116 // comando fuori parsing
MaxScorda 29:bfb815540de7 117 if (errp==1) {
MaxScorda 29:bfb815540de7 118 // pc.printf("Bad command\n\r");
MaxScorda 32:b7859f48942a 119 term.forgcol(1);
MaxScorda 32:b7859f48942a 120 term.formatPrintf("Bad Command\n",21,8,5);
MaxScorda 32:b7859f48942a 121 term.forgcol(9);
MaxScorda 29:bfb815540de7 122 if (realExtraSerial==false) ardser.printf("Bad command\n\r");
MaxScorda 29:bfb815540de7 123 printDisp(dispType,"** Bad command ** \n\r");
MaxScorda 29:bfb815540de7 124 }
MaxScorda 29:bfb815540de7 125 term.readypos();
MaxScorda 29:bfb815540de7 126 }
MaxScorda 29:bfb815540de7 127
MaxScorda 29:bfb815540de7 128
MaxScorda 28:f7a59cee5f0d 129 void writeInput(char stringa[])
MaxScorda 28:f7a59cee5f0d 130 {
MaxScorda 28:f7a59cee5f0d 131 string strIn = string(stringa);
MaxScorda 28:f7a59cee5f0d 132 strIn=fnzAdd.addEOS(strIn);
MaxScorda 28:f7a59cee5f0d 133 //ardser.printf(strIn+" \n\r");
MaxScorda 32:b7859f48942a 134 term.formatPrintf(fnzAdd.string2char(strIn),18,21,10);
MaxScorda 29:bfb815540de7 135 term.readypos();
MaxScorda 29:bfb815540de7 136 }
MaxScorda 28:f7a59cee5f0d 137
MaxScorda 7:f57abb3f0d3f 138
MaxScorda 7:f57abb3f0d3f 139 void pressed()
MaxScorda 7:f57abb3f0d3f 140 {
MaxScorda 7:f57abb3f0d3f 141 //vedere come rimediare
MaxScorda 7:f57abb3f0d3f 142 sc.pressed();
MaxScorda 7:f57abb3f0d3f 143 }
MaxScorda 7:f57abb3f0d3f 144
MaxScorda 7:f57abb3f0d3f 145
MaxScorda 8:3f1d8c55b3a0 146
MaxScorda 9:9ad85b6bd9cf 147