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

Files at this revision

API Documentation at this revision

Comitter:
MaxScorda
Date:
Sun Sep 06 23:06:14 2015 +0000
Parent:
26:e72da2db66a5
Child:
28:f7a59cee5f0d
Commit message:
Attivata seriale in ingresso. Da sviluppare

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sun Sep 06 13:14:20 2015 +0000
+++ b/main.cpp	Sun Sep 06 23:06:14 2015 +0000
@@ -30,13 +30,11 @@
 int main()
 {
     // Seriale Principale
-    char c; // variabile che contiene il carattere appena ricevuto
-    char buffer[128]; // buffer di accumulo dei caratteri in sequenza
-    char i=0; // variabile di comodo per il conteggio dei caratteri
-    // Seriale esterna Arduino
-    char ce; // variabile che contiene il carattere appena ricevuto
-    char buffere[128]; // buffer di accumulo dei caratteri in sequenza
-    char ie=0; // variabile di comodo per il conteggio dei caratteri
+    char c[4]; // variabile che contiene il carattere appena ricevuto
+    char buffer[4][128]; // buffer di accumulo dei caratteri in sequenza
+    char bufferTemp[128]; //buffer di appoggio per le funzioni di stampa. Sarebbe meglio evitarlo passando alla funzione una matrice
+    char i[4]= {0,0,0,0}; // variabile di comodo per il conteggio dei caratteri
+
     //Serial config
     pc.baud(SERIAL1BAUD);
     ardser.baud(SERIALARDBAUD);
@@ -58,41 +56,43 @@
         ardser.attach(&callback);
         //seriale interna
         if (pc.readable()) {
-            c=pc.getc(); //legge un carattere dalla seriale
+            c[0]=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
+            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");
-                buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
+                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) {
+                if (i[0]>0) {
                     if (realExtraSerial==false) ardser.printf("\ncmd Ready\n\r");
-                    parser(buffer);
+                    for(int ii=0; ii<=i[0]; ii++) bufferTemp[ii]=buffer[0][ii];
+                    parser(bufferTemp);
                 } else sc.commitScreen();
-                i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
+                i[0]=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
+        if (ardser.readable()) {
+            c[1]=ardser.getc(); //legge un carattere dalla seriale
+            if (c[1] != 13) {
+                buffer[1][i[1]]=c[1]; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
+                i[1]++; // incrementa il puntatore al buffer
+                led.flash(2);
+            } else {
+                ////?   pc.printf("\n\r");
+                buffer[1][i[1]]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
+                //controlla di non  mandare solo un CR
+                if (i[1]>0) {
+                    ////?     ardser.printf("\ncmd Ready\n\r");
+                    ////?     parser(buffere);
+                } else sc.commitScreen();
+                i[1]=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
+            }
+        }
+
     }
 }