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@1:e17894b4be01, 2015-05-21 (annotated)
- Committer:
- MaxScorda
- Date:
- Thu May 21 00:08:26 2015 +0000
- Revision:
- 1:e17894b4be01
- Parent:
- 0:dd5e64dd6caf
- Child:
- 2:e7915367de83
Implementato config.h e seconda seriale per arduino anche se non funzionante
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MaxScorda | 0:dd5e64dd6caf | 1 | #include "mbed.h" |
MaxScorda | 1:e17894b4be01 | 2 | #include "config.h" |
MaxScorda | 1:e17894b4be01 | 3 | |
MaxScorda | 0:dd5e64dd6caf | 4 | DigitalOut myled1(LED1); //definisce myled |
MaxScorda | 0:dd5e64dd6caf | 5 | DigitalOut myled2(LED2); //definisce myled |
MaxScorda | 0:dd5e64dd6caf | 6 | InterruptIn mybutton(USER_BUTTON); |
MaxScorda | 0:dd5e64dd6caf | 7 | Serial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2 |
MaxScorda | 1:e17894b4be01 | 8 | Serial ardser(D8, D2); //Apertura della seriale 1 *opzionale vedi sotto |
MaxScorda | 1:e17894b4be01 | 9 | |
MaxScorda | 0:dd5e64dd6caf | 10 | |
MaxScorda | 0:dd5e64dd6caf | 11 | |
MaxScorda | 0:dd5e64dd6caf | 12 | void pressed() |
MaxScorda | 0:dd5e64dd6caf | 13 | { |
MaxScorda | 0:dd5e64dd6caf | 14 | pc.printf("\f"); |
MaxScorda | 0:dd5e64dd6caf | 15 | pc.printf("*** Reset Screen ***\n\r\n"); |
MaxScorda | 0:dd5e64dd6caf | 16 | } |
MaxScorda | 0:dd5e64dd6caf | 17 | |
MaxScorda | 0:dd5e64dd6caf | 18 | void banner() |
MaxScorda | 0:dd5e64dd6caf | 19 | { |
MaxScorda | 0:dd5e64dd6caf | 20 | pc.printf("\f"); |
MaxScorda | 0:dd5e64dd6caf | 21 | pc.printf("----- Boot screen -----\n\r"); |
MaxScorda | 0:dd5e64dd6caf | 22 | pc.printf("--- Nucleo Scorda IO Test ---\n\r\n"); |
MaxScorda | 0:dd5e64dd6caf | 23 | } |
MaxScorda | 0:dd5e64dd6caf | 24 | |
MaxScorda | 0:dd5e64dd6caf | 25 | |
MaxScorda | 0:dd5e64dd6caf | 26 | int main() |
MaxScorda | 0:dd5e64dd6caf | 27 | { |
MaxScorda | 0:dd5e64dd6caf | 28 | char c; // variabile che contiene il carattere appena ricevuto |
MaxScorda | 0:dd5e64dd6caf | 29 | char buffer[128]; // buffer di accumulo dei caratteri in sequenza |
MaxScorda | 0:dd5e64dd6caf | 30 | char i=0; // variabile di comodo per il conteggio dei caratteri |
MaxScorda | 1:e17894b4be01 | 31 | //Serial config |
MaxScorda | 1:e17894b4be01 | 32 | pc.baud(SERIAL1BAUD); |
MaxScorda | 1:e17894b4be01 | 33 | ardser.baud(SERIALARDBAUD); |
MaxScorda | 1:e17894b4be01 | 34 | //pc.format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1) |
MaxScorda | 1:e17894b4be01 | 35 | |
MaxScorda | 1:e17894b4be01 | 36 | int cont=0; |
MaxScorda | 0:dd5e64dd6caf | 37 | mybutton.fall(&pressed); |
MaxScorda | 0:dd5e64dd6caf | 38 | banner(); |
MaxScorda | 0:dd5e64dd6caf | 39 | |
MaxScorda | 0:dd5e64dd6caf | 40 | while(1) { |
MaxScorda | 1:e17894b4be01 | 41 | ardser.printf("Cont %d\n\r", cont++); |
MaxScorda | 0:dd5e64dd6caf | 42 | c=pc.getc(); //legge un carattere dalla seriale |
MaxScorda | 0:dd5e64dd6caf | 43 | if (c != 13) { |
MaxScorda | 0:dd5e64dd6caf | 44 | buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer |
MaxScorda | 0:dd5e64dd6caf | 45 | i++; // incrementa il puntatore al buffer |
MaxScorda | 0:dd5e64dd6caf | 46 | } else { |
MaxScorda | 0:dd5e64dd6caf | 47 | pc.printf("\n\r"); |
MaxScorda | 0:dd5e64dd6caf | 48 | buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa |
MaxScorda | 0:dd5e64dd6caf | 49 | i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa |
MaxScorda | 0:dd5e64dd6caf | 50 | if ((strcmp(buffer,"on")==0) // confronta la stringa ricevuta con le costanti accettate per il comando di accensione del led |
MaxScorda | 0:dd5e64dd6caf | 51 | ||(strcmp(buffer,"acceso")==0) //la funzione strcmp fa parte della libreria string standard del C e confronta 2 stringhe |
MaxScorda | 0:dd5e64dd6caf | 52 | ||(strcmp(buffer,"apriti sesamo")==0)) { //restituendo 0 se le stringhe sono uguali. |
MaxScorda | 0:dd5e64dd6caf | 53 | pc.printf("Led ACCESO \n\r"); |
MaxScorda | 1:e17894b4be01 | 54 | ardser.printf("Led ACCESO \n\r"); |
MaxScorda | 0:dd5e64dd6caf | 55 | myled1 = 1; //Accende il led |
MaxScorda | 0:dd5e64dd6caf | 56 | } |
MaxScorda | 0:dd5e64dd6caf | 57 | if ((strcmp(buffer,"off")==0) //Confronto per i comandi di spegnimento del led |
MaxScorda | 0:dd5e64dd6caf | 58 | ||(strcmp(buffer,"spento")==0) |
MaxScorda | 0:dd5e64dd6caf | 59 | ||(strcmp(buffer,"chiuditi sesamo")==0)) { |
MaxScorda | 0:dd5e64dd6caf | 60 | pc.printf("Led SPENTO !\n\r"); |
MaxScorda | 1:e17894b4be01 | 61 | ardser.printf("Led SPENTO! \n\r"); |
MaxScorda | 0:dd5e64dd6caf | 62 | |
MaxScorda | 0:dd5e64dd6caf | 63 | myled1 = 0; // spegne il led |
MaxScorda | 0:dd5e64dd6caf | 64 | } |
MaxScorda | 0:dd5e64dd6caf | 65 | } |
MaxScorda | 0:dd5e64dd6caf | 66 | } |
MaxScorda | 0:dd5e64dd6caf | 67 | } |