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

Revision:
29:bfb815540de7
Parent:
28:f7a59cee5f0d
Child:
31:abff828992d7
--- a/main.cpp	Wed Sep 09 20:07:24 2015 +0000
+++ b/main.cpp	Mon Sep 14 21:33:42 2015 +0000
@@ -2,12 +2,15 @@
 #include "config.h"
 #include "IOFuncLib.h"
 #include "BufferedSerial.h"
+#include "Terminal.h"
+
+
 
 
 //init standard
 InterruptIn mybutton(USER_BUTTON);
-//Serial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
-//Serial ardser(PA_11, PA_12); //Apertura della seriale 1 *opzionale vedi sotto
+
+Terminal term(USBTX, USBRX); // tx, rx
 BufferedSerial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
 BufferedSerial ardser(PA_11, PA_12); //Apertura della seriale 1 *opzionale vedi sotto
 //init funzioni personal lib
@@ -36,14 +39,16 @@
     char i[4]= {0,0,0,0}; // variabile di comodo per il conteggio dei caratteri
 
     //Serial config
-    pc.baud(SERIAL1BAUD);
+   // pc.baud(SERIAL1BAUD);
+    pc.baud(9600);
     ardser.baud(SERIALARDBAUD);
     //pc.format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
 
     mybutton.fall(&pressed);
     ScreenSaver.attach(&scsa,60);
-    sc.emptyFrame();
-    sc.banner();
+    // sc.emptyFrame(); ////////////////////////// rimettere
+
+    term.banner();
     //ardser
     ardser.printf("Connected\r");
     // display
@@ -56,19 +61,21 @@
         //seriale interna
         if (pc.readable()) {
             c[0]=pc.getc(); //legge un carattere dalla seriale
+            term.putc(c[0]); //redirect to terminal
             if (c[0] != 13) {
                 buffer[0][i[0]]=c[0]; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
                 i[0]++; // incrementa il puntatore al buffer
                 led.flash(2);
             } else {
-                pc.printf("\n\r");
+                //pc.printf("\n\r");
                 buffer[0][i[0]]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
                 //controlla di non  mandare solo un CR
                 if (i[0]>0) {
                    // if (realExtraSerial==false) ardser.printf("cmd Ready\n\r");
                     for(int ii=0; ii<=i[0]; ii++) bufferTemp[ii]=buffer[0][ii];
-                    parser(bufferTemp);
-                } else sc.commitScreen();
+                    parserVT100(bufferTemp);
+                } 
+                 else sc.commitScreen();
                 i[0]=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
             }
         }
@@ -86,7 +93,8 @@
                 if (i[1]>0) {
                     for(int ii=0; ii<=i[1]; ii++) bufferTemp[ii]=buffer[1][ii];
                     writeInput(bufferTemp);                    
-                } else sc.commitScreen();
+                }
+                 else term.readypos();
                 i[1]=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
             }
         }