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

Functions.h

Committer:
MaxScorda
Date:
2015-08-20
Revision:
22:96199b7addb9
Parent:
21:a867c9454f21
Child:
23:b7bd85345617

File content as of revision 22:96199b7addb9:

#include <string>
#include "IOFuncLib.h"
genFunctions fnzAdd; //messa qui rende la raccolta funzioni indipendente

void callback()
{
    // Note: you need to actually read from the serial to clear the RX interrupt
    // ardser.printf("%d \n", cont++);
//  myled2 = !myled2;
}


void parser(char stringa[])
{
    string func; //funzione l=led
    string funcnum; //funzione ordinata 1,2,3 ecc
    string param; //parametro on, off
    string strIn = string(stringa);
    bool errp=1;
    //pad a 4
    strIn=fnzAdd.padstr(strIn,5,' ');
    strIn=fnzAdd.addEOS(strIn);
    //split
    func=strIn.substr(0,1);
    funcnum=strIn.substr(1,1);
    param=strIn.substr(2,3);
    //write param
    sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(func)),2,8,15);
    sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(funcnum)),22,8,15);
    sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(param)),42,8,15);
    //write input string
    sc.writeScreen(fnzAdd.string2char(strIn),2,20,20);
    //sc.writeScreen((char*)func.c_str() ,02,07); funziona anche cosi'

    //extra serial output (output reale su arduino default true)
    if (func=="s") {
        if (funcnum=="r") {
            if (param=="on ") {
                realExtraSerial=true;
                sc.writeScreen("ON \n",62,14,3);
                errp=0;
            }
            if (param=="off") {
                realExtraSerial=false;
                sc.writeScreen("OFF\n",62,14);
                errp=0;
            }
        }
    }

    //led
    if (func=="l") {
        if (funcnum=="1") {
            if (param=="on ") {
                sc.writeScreen("ON \n",2,14,3);
                sc.writeScreen("Led ACCESO \n",42,20,99);
                if (realExtraSerial==false)  ardser.printf("\nLed ACCESO \n\r");
                printDisp(dispType,"Led ACCESO \n\r");
                led.onOff(1); //Accende il led
                errp=0;
            }
            if (param=="off") {
                sc.writeScreen("OFF \n",2,14);
                sc.writeScreen("Led SPENTO! \n",42,20,99);
               if (realExtraSerial==false)  ardser.printf("\nLed SPENTO! \n\r");
                printDisp(dispType,"Led SPENTO \n\r");
                led.onOff(0); //Spegne il led
                errp=0;
            }
        }
    }
    //virtual
    if (func=="v") {
        if (funcnum=="1") {
            if (param=="on ") {
                sc.writeScreen("ON \n",22,14);
                sc.writeScreen("Virtual ACCESO \n",42,20,99);
                if (realExtraSerial==false) ardser.printf("\nVirtual ACCESO \n\r");
                printDisp(dispType,"Virtual ACCESO \n\r");
                errp=0;
            }
            if (param=="off") {
                sc.writeScreen("OFF \n",22,14);
                sc.writeScreen("Virtual SPENTO! \n",42,20,99);
                if (realExtraSerial==false) ardser.printf("\nVirtual SPENTO! \n\r");
                printDisp(dispType,"Virtual SPENTO \n\r");
                errp=0;
            }
        }
    }

    //command SYNTH
    if ((func>="0") && (func<="9")) {
        if ((funcnum>="0") && (funcnum<="9")) {
            sc.writeScreen(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)),42,14,4);
            sc.writeScreen("Arduino Command \n",42,20,99);
            ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+funcnum+param+"\r")));
            printDisp(dispType,"Arduino Command \n\r");
            printDisp(dispType,fnzAdd.string2char(fnzAdd.addEOS("  "+func+funcnum+param+"\r")));
            //ardser.printf(fnzAdd.string2char(fnzAdd.addEOS(func+"-"+funcnum+"-"+param)));
            errp=0;
        }
    }

    // comando fuori parsing
    if (errp==1) {
        // pc.printf("Bad command\n\r");
        sc.writeScreen("Bad Command\n",42,20,99);
        if (realExtraSerial==false) ardser.printf("\nBad command\n\r");
        printDisp(dispType,"** Bad command ** \n\r");
    }
    sc.commitScreen();
}


void pressed()
{
    //vedere come rimediare
    sc.pressed();
}