Console Serial IO con display OLED e seriale asincrona
Dependencies: mbed BufferedSerial AserialIOFuncLib SSD1306 TerminalPlusV2
Fork of SerialIO by
Console Serial IO con display OLED e seriale asincrona
Diff: main.cpp
- Revision:
- 27:b8d7f2ede945
- Parent:
- 25:5e93e62a319e
- Child:
- 28:f7a59cee5f0d
--- 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 + } + } + } }