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
main.cpp
- Committer:
- MaxScorda
- Date:
- 2015-08-20
- Revision:
- 23:b7bd85345617
- Parent:
- 21:a867c9454f21
- Child:
- 24:1603f5b23d98
File content as of revision 23:b7bd85345617:
#include "mbed.h" #include "config.h" #include "IOFuncLib.h" #include "BufferedSerial.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 //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); genFunctions fnz; Ticker ScreenSaver; //var int cont=0; int dispType=0; //0:oled 1:lcd bool realExtraSerial=true; //se true manda fuori solo le info reali senno demo //------------ Funzioni ------------- #include "macroDisp.h" #include "Functions.h" 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 //Serial config pc.baud(SERIAL1BAUD); 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(); //ardser ardser.printf("Connected\r"); // display initDisp(dispType); setFontDisp(dispType,'N'); 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 } /* //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 } */ } }