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 Aug 20 08:28:57 2015 +0000
Revision:
23:b7bd85345617
Parent:
22:96199b7addb9
Child:
28:f7a59cee5f0d
ScreenSaver

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 7:f57abb3f0d3f 18 void parser(char stringa[])
MaxScorda 7:f57abb3f0d3f 19 {
MaxScorda 7:f57abb3f0d3f 20 string func; //funzione l=led
MaxScorda 7:f57abb3f0d3f 21 string funcnum; //funzione ordinata 1,2,3 ecc
MaxScorda 7:f57abb3f0d3f 22 string param; //parametro on, off
MaxScorda 7:f57abb3f0d3f 23 string strIn = string(stringa);
MaxScorda 8:3f1d8c55b3a0 24 bool errp=1;
MaxScorda 8:3f1d8c55b3a0 25 //pad a 4
MaxScorda 8:3f1d8c55b3a0 26 strIn=fnzAdd.padstr(strIn,5,' ');
MaxScorda 7:f57abb3f0d3f 27 strIn=fnzAdd.addEOS(strIn);
MaxScorda 8:3f1d8c55b3a0 28 //split
MaxScorda 7:f57abb3f0d3f 29 func=strIn.substr(0,1);
MaxScorda 7:f57abb3f0d3f 30 funcnum=strIn.substr(1,1);
MaxScorda 8:3f1d8c55b3a0 31 param=strIn.substr(2,3);
MaxScorda 8:3f1d8c55b3a0 32 //write param
MaxScorda 8:3f1d8c55b3a0 33 sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(func)),2,8,15);
MaxScorda 8:3f1d8c55b3a0 34 sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),22,8,15);
MaxScorda 8:3f1d8c55b3a0 35 sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(param)),42,8,15);
MaxScorda 8:3f1d8c55b3a0 36 //write input string
MaxScorda 8:3f1d8c55b3a0 37 sc.writeScreen(fnzAdd.string2char(strIn),2,20,20);
MaxScorda 8:3f1d8c55b3a0 38 //sc.writeScreen((char*)func.c_str() ,02,07); funziona anche cosi'
MaxScorda 7:f57abb3f0d3f 39
MaxScorda 20:fc0a3050c5d1 40 //extra serial output (output reale su arduino default true)
MaxScorda 20:fc0a3050c5d1 41 if (func=="s") {
MaxScorda 20:fc0a3050c5d1 42 if (funcnum=="r") {
MaxScorda 20:fc0a3050c5d1 43 if (param=="on ") {
MaxScorda 20:fc0a3050c5d1 44 realExtraSerial=true;
MaxScorda 20:fc0a3050c5d1 45 sc.writeScreen("ON \n",62,14,3);
MaxScorda 21:a867c9454f21 46 errp=0;
MaxScorda 20:fc0a3050c5d1 47 }
MaxScorda 20:fc0a3050c5d1 48 if (param=="off") {
MaxScorda 20:fc0a3050c5d1 49 realExtraSerial=false;
MaxScorda 20:fc0a3050c5d1 50 sc.writeScreen("OFF\n",62,14);
MaxScorda 21:a867c9454f21 51 errp=0;
MaxScorda 20:fc0a3050c5d1 52 }
MaxScorda 20:fc0a3050c5d1 53 }
MaxScorda 20:fc0a3050c5d1 54 }
MaxScorda 20:fc0a3050c5d1 55
MaxScorda 13:92303a41947a 56 //led
MaxScorda 8:3f1d8c55b3a0 57 if (func=="l") {
MaxScorda 8:3f1d8c55b3a0 58 if (funcnum=="1") {
MaxScorda 8:3f1d8c55b3a0 59 if (param=="on ") {
MaxScorda 8:3f1d8c55b3a0 60 sc.writeScreen("ON \n",2,14,3);
MaxScorda 8:3f1d8c55b3a0 61 sc.writeScreen("Led ACCESO \n",42,20,99);
MaxScorda 22:96199b7addb9 62 if (realExtraSerial==false) ardser.printf("\nLed ACCESO \n\r");
MaxScorda 15:7d756492af23 63 printDisp(dispType,"Led ACCESO \n\r");
MaxScorda 21:a867c9454f21 64 led.onOff(1); //Accende il led
MaxScorda 8:3f1d8c55b3a0 65 errp=0;
MaxScorda 8:3f1d8c55b3a0 66 }
MaxScorda 8:3f1d8c55b3a0 67 if (param=="off") {
MaxScorda 8:3f1d8c55b3a0 68 sc.writeScreen("OFF \n",2,14);
MaxScorda 8:3f1d8c55b3a0 69 sc.writeScreen("Led SPENTO! \n",42,20,99);
MaxScorda 23:b7bd85345617 70 if (realExtraSerial==false) ardser.printf("\nLed SPENTO! \n\r");
MaxScorda 15:7d756492af23 71 printDisp(dispType,"Led SPENTO \n\r");
MaxScorda 21:a867c9454f21 72 led.onOff(0); //Spegne il led
MaxScorda 8:3f1d8c55b3a0 73 errp=0;
MaxScorda 8:3f1d8c55b3a0 74 }
MaxScorda 8:3f1d8c55b3a0 75 }
MaxScorda 7:f57abb3f0d3f 76 }
MaxScorda 8:3f1d8c55b3a0 77 //virtual
MaxScorda 8:3f1d8c55b3a0 78 if (func=="v") {
MaxScorda 8:3f1d8c55b3a0 79 if (funcnum=="1") {
MaxScorda 8:3f1d8c55b3a0 80 if (param=="on ") {
MaxScorda 8:3f1d8c55b3a0 81 sc.writeScreen("ON \n",22,14);
MaxScorda 8:3f1d8c55b3a0 82 sc.writeScreen("Virtual ACCESO \n",42,20,99);
MaxScorda 20:fc0a3050c5d1 83 if (realExtraSerial==false) ardser.printf("\nVirtual ACCESO \n\r");
MaxScorda 17:7c8c37fbec9f 84 printDisp(dispType,"Virtual ACCESO \n\r");
MaxScorda 8:3f1d8c55b3a0 85 errp=0;
MaxScorda 8:3f1d8c55b3a0 86 }
MaxScorda 8:3f1d8c55b3a0 87 if (param=="off") {
MaxScorda 8:3f1d8c55b3a0 88 sc.writeScreen("OFF \n",22,14);
MaxScorda 8:3f1d8c55b3a0 89 sc.writeScreen("Virtual SPENTO! \n",42,20,99);
MaxScorda 20:fc0a3050c5d1 90 if (realExtraSerial==false) ardser.printf("\nVirtual SPENTO! \n\r");
MaxScorda 17:7c8c37fbec9f 91 printDisp(dispType,"Virtual SPENTO \n\r");
MaxScorda 8:3f1d8c55b3a0 92 errp=0;
MaxScorda 8:3f1d8c55b3a0 93 }
MaxScorda 8:3f1d8c55b3a0 94 }
MaxScorda 7:f57abb3f0d3f 95 }
MaxScorda 13:92303a41947a 96
MaxScorda 9:9ad85b6bd9cf 97 //command SYNTH
MaxScorda 20:fc0a3050c5d1 98 if ((func>="0") && (func<="9")) {
MaxScorda 20:fc0a3050c5d1 99 if ((funcnum>="0") && (funcnum<="9")) {
MaxScorda 9:9ad85b6bd9cf 100 sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)),42,14,4);
MaxScorda 9:9ad85b6bd9cf 101 sc.writeScreen("Arduino Command \n",42,20,99);
MaxScorda 20:fc0a3050c5d1 102 ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+funcnum+param+"\r")));
MaxScorda 17:7c8c37fbec9f 103 printDisp(dispType,"Arduino Command \n\r");
MaxScorda 17:7c8c37fbec9f 104 printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS(" "+func+funcnum+param+"\r")));
MaxScorda 9:9ad85b6bd9cf 105 //ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)));
MaxScorda 9:9ad85b6bd9cf 106 errp=0;
MaxScorda 9:9ad85b6bd9cf 107 }
MaxScorda 13:92303a41947a 108 }
MaxScorda 8:3f1d8c55b3a0 109
MaxScorda 8:3f1d8c55b3a0 110 // comando fuori parsing
MaxScorda 7:f57abb3f0d3f 111 if (errp==1) {
MaxScorda 7:f57abb3f0d3f 112 // pc.printf("Bad command\n\r");
MaxScorda 8:3f1d8c55b3a0 113 sc.writeScreen("Bad Command\n",42,20,99);
MaxScorda 20:fc0a3050c5d1 114 if (realExtraSerial==false) ardser.printf("\nBad command\n\r");
MaxScorda 17:7c8c37fbec9f 115 printDisp(dispType,"** Bad command ** \n\r");
MaxScorda 7:f57abb3f0d3f 116 }
MaxScorda 13:92303a41947a 117 sc.commitScreen();
MaxScorda 7:f57abb3f0d3f 118 }
MaxScorda 7:f57abb3f0d3f 119
MaxScorda 7:f57abb3f0d3f 120
MaxScorda 7:f57abb3f0d3f 121 void pressed()
MaxScorda 7:f57abb3f0d3f 122 {
MaxScorda 7:f57abb3f0d3f 123 //vedere come rimediare
MaxScorda 7:f57abb3f0d3f 124 sc.pressed();
MaxScorda 7:f57abb3f0d3f 125 }
MaxScorda 7:f57abb3f0d3f 126
MaxScorda 7:f57abb3f0d3f 127
MaxScorda 8:3f1d8c55b3a0 128
MaxScorda 9:9ad85b6bd9cf 129