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-05-21
- Revision:
- 3:2f32e34d820c
- Parent:
- 2:e7915367de83
- Child:
- 4:aa08e8d5ac27
File content as of revision 3:2f32e34d820c:
#include "mbed.h" #include "config.h" DigitalOut myled1(LED1); //definisce myled DigitalOut myled2(LED2); //definisce myled 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 int cont=0; void pressed() { pc.printf("\f"); pc.printf("*** Reset Screen ***\n\r\n"); } void banner() { pc.printf("\f"); pc.printf("----- Boot screen -----\n\r"); pc.printf("--- Nucleo Scorda IO Test ---\n\r\n"); } void callback() { // Note: you need to actually read from the serial to clear the RX interrupt // ardser.printf("%d \n", cont++); // myled2 = !myled2; } int main() { 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 //Serial config pc.baud(SERIAL1BAUD); ardser.baud(SERIALARDBAUD); //pc.format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1) mybutton.fall(&pressed); banner(); while(1) { ardser.attach(&callback); 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 } else { pc.printf("\n\r"); buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa if ((strcmp(buffer,"on")==0) // confronta la stringa ricevuta con le costanti accettate per il comando di accensione del led ||(strcmp(buffer,"acceso")==0) //la funzione strcmp fa parte della libreria string standard del C e confronta 2 stringhe ||(strcmp(buffer,"apriti sesamo")==0)) { //restituendo 0 se le stringhe sono uguali. pc.printf("Led ACCESO \n\r"); ardser.printf("\nLed ACCESO \n\r"); myled1 = 1; //Accende il led } if ((strcmp(buffer,"off")==0) //Confronto per i comandi di spegnimento del led ||(strcmp(buffer,"spento")==0) ||(strcmp(buffer,"chiuditi sesamo")==0)) { pc.printf("Led SPENTO !\n\r"); ardser.printf("\nLed SPENTO! \n\r"); myled1 = 0; // spegne il led } } } }