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:
25:5e93e62a319e
Parent:
24:1603f5b23d98
Child:
27:b8d7f2ede945
--- a/main.cpp	Fri Sep 04 22:14:13 2015 +0000
+++ b/main.cpp	Sun Sep 06 13:08:38 2015 +0000
@@ -6,10 +6,10 @@
 
 //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
-//BufferedSerial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
-//BufferedSerial ardser(PA_11, PA_12); //Apertura della seriale 1 *opzionale vedi sotto
+//Serial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
+//Serial ardser(PA_11, PA_12); //Apertura della seriale 1 *opzionale vedi sotto
+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
 Flasher led(LED1);
 Screen sc(&pc);
@@ -54,56 +54,45 @@
     bannerDisp(dispType);
 
     while(1) {
-        /*
-          Timer s;
-        
-          s.start();
-          pc.printf("Hello World - buffered\n");
-          int buffered_time = s.read_us();
-          wait(0.1f); // give time for the buffer to empty
- *        
- *          s.reset();
- *          printf("Hello World - blocking\n");
- *          int polled_time = s.read_us();
- *          s.stop();
- *          wait(0.1f); // give time for the buffer to empty
- */
-        
+
         ardser.attach(&callback);
         //seriale interna
-        c=pc.getc(); //legge un carattere dalla seriale
-        if (c != 13) {
-            buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
-            i++; // incrementa il puntatore al buffer
-            led.flash(2);
-        } else {
-            pc.printf("\n\r");
-            buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
-            //controlla di non  mandare solo un CR
-            if (i>0) {
-                if (realExtraSerial==false) ardser.printf("\ncmd Ready\n\r");
-                parser(buffer);
-            } else sc.commitScreen();
-            i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
+        if (pc.readable()) {
+            c=pc.getc(); //legge un carattere dalla seriale
+
+            if (c != 13) {
+                buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
+                i++; // incrementa il puntatore al buffer
+                led.flash(2);
+            } else {
+                pc.printf("\n\r");
+                buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
+                //controlla di non  mandare solo un CR
+                if (i>0) {
+                    if (realExtraSerial==false) ardser.printf("\ncmd Ready\n\r");
+                    parser(buffer);
+                } else sc.commitScreen();
+                i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
+            }
         }
-/*
-        //seriale esterna
-        ce=ardser.getc(); //legge un carattere dalla seriale
-        if (ce != 13) {
-            buffere[i]=ce; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
-            ie++; // incrementa il puntatore al buffer
-            led.flash(2);
-        } else {
-            ////?   pc.printf("\n\r");
-            buffere[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
-            //controlla di non  mandare solo un CR
-            if (ie>0) {
-                ////?     ardser.printf("\ncmd Ready\n\r");
-                ////?     parser(buffere);
-            } else sc.commitScreen();
-            ie=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
-        }
-        */
+        /*
+                //seriale esterna
+                ce=ardser.getc(); //legge un carattere dalla seriale
+                if (ce != 13) {
+                    buffere[i]=ce; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
+                    ie++; // incrementa il puntatore al buffer
+                    led.flash(2);
+                } else {
+                    ////?   pc.printf("\n\r");
+                    buffere[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
+                    //controlla di non  mandare solo un CR
+                    if (ie>0) {
+                        ////?     ardser.printf("\ncmd Ready\n\r");
+                        ////?     parser(buffere);
+                    } else sc.commitScreen();
+                    ie=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
+                }
+                */
     }
 }